首頁  >  文章  >  後端開發  >  如何分別依數值和鍵降序和升序對關聯數組進行排序?

如何分別依數值和鍵降序和升序對關聯數組進行排序?

Susan Sarandon
Susan Sarandon原創
2024-11-11 10:01:03272瀏覽

How to Sort an Associative Array by Numeric Value and Key in Descending and Ascending Order Respectively?

按數值和鍵進行關聯數組排序

此編程困境涉及帶有數值的關聯列表數組,專門針對創建其中標籤首先按出現次數降序排序,然後按字母升序排序。

問題定義

考慮一個範例陣列:

$arrTags = [
    'mango' => 2, 
    'orange' => 4, 
    'apple' => 2,
    'banana' => 3
];

此陣列所需的輸出為排序清單:

orange (4)  
banana (3) 
apple (2) 
mango (2)

原生PHP 函數arsort() 存在不足,因為由於其字母順序的優勢,它將芒果優先於蘋果。

使用 array_keys() 和 array_values() 函數,可以更有效地解決這個問題。以下程式碼舉例說明了解決方案:

array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);

這一行消除了對循環的需要,並透過先使用 array_values() 將數組中的值提取到可排序數組中來完成必要的排序。隨後,使用 SORT_DESC 將值按降序排序。同時,使用 array_keys() 提取對應的鍵,並使用 SORT_ASC 按升序排序。然後利用提供的 $arrTags 參數將結果重新組合到原始數組中。

以上是如何分別依數值和鍵降序和升序對關聯數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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