按數值和鍵進行關聯數組排序
此編程困境涉及帶有數值的關聯列表數組,專門針對創建其中標籤首先按出現次數降序排序,然後按字母升序排序。
問題定義
考慮一個範例陣列:
$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中文網其他相關文章!