按數值和鍵對陣列進行排序
在程式設計中,會出現需要依特定條件對關聯陣列進行排序的情況。其中一個場景是按數值然後按鍵對陣列進行排序。
假設我們有一個包含字串鍵和代表標籤出現次數的數值的陣列:
$arrTags = [ 'mango' => 2, 'orange' => 4, 'apple' => 2, 'banana' => 3 ];
我們的目標是顯示清單中出現次數最多的標籤排在前面,如果出現次數相同,則依字母順序對標籤名稱進行排序。這將導致:
orange (4) banana (3) apple (2) mango (2)
雖然 arsort() 函數最初可以對值進行排序,但當多個值相等時,它將無法維持鍵的字母順序。
按照建議Scott Saunders 提出,我們可以利用array_keys() 和array_values() 函數來克服這個限制:
array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);
這個函數組合允許我們直接操作數組的鍵和值,最終實作所需的排序行為。透過按降序對值進行排序,然後按升序對鍵進行排序,我們獲得了所需的輸出。
以上是如何按數值和鍵按字母順序對關聯數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!