PHP 中使用自訂比較函數可以對陣列進行排序,並保留鍵名。為了做到這一點,可以使用 usort() 函數,它需要一個陣列和一個回呼函數作為參數。回呼函數接收兩個陣列元素,傳回一個整數 (-1、0 或 1) 來指示排序順序。
使用自訂比較函數對陣列進行排序是在陣列運算中的常用操作。在 PHP 中,可以使用 usort()
函數輕鬆實現此目的。
usort(array, callable)
以下範例展示如何使用自訂比較函數對數組中的鍵名進行排序,同時保留鍵名:
<?php // 待排序的数组 $arr = [ 'a' => 10, 'c' => 5, 'b' => 20, ]; // 自定义比较函数 $compare = function ($a, $b) { return strcmp($a['key'], $b['key']); }; usort($arr, $compare); // 输出排序后的数组 print_r($arr);
在這個在例子中,compare
函數將兩個鍵名($a['key']
和$b['key']
)作為參數,並使用strcmp()
函數對其進行比較。 strcmp()
函數傳回 -1、0 或 1,指示第一個字串是否小於、等於或大於第二個字串。
當呼叫 usort()
函數時,它將指定的比較函數套用到 $arr
陣列中的每個元素。如果 compare
函數傳回 -1,則第一個元素將排在第二個元素之前;如果傳回 1,則反之;如果傳回 0,則元素的順序保持不變。
最終輸出為:
Array ( [a] => 10 [b] => 20 [c] => 5 )
陣列依照鍵名從小到大排序,同時保留了鍵名。
以上是PHP 中如何使用自訂比較函數對陣列進行排序,並保留鍵名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!