首頁 >後端開發 >php教程 >如何按數值和鍵按字母順序對關聯數組進行排序?

如何按數值和鍵按字母順序對關聯數組進行排序?

Patricia Arquette
Patricia Arquette原創
2024-11-11 07:48:03968瀏覽

How to Sort an Associative Array by Numeric Value and Key Alphabetically?

按數值和鍵對陣列進行排序

在程式設計中,會出現需要依特定條件對關聯陣列進行排序的情況。其中一個場景是按數值然後按鍵對陣列進行排序。

假設我們有一個包含字串鍵和代表標籤出現次數的數值的陣列:

$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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn