依屬性對物件陣列進行排序
在各種程式設計場景中都會遇到物件陣列。這些物件擁有多個屬性,例如名稱和計數。根據特定屬性組織這些物件通常很有用。
自訂比較函數:usort
PHP 提供了 usort 函數用於對陣列進行排序。此函數允許自訂用於排序的比較函數,使您能夠指定物件排序所依據的屬性。
usort 的語法如下:
usort($array, $compare_function)
其中 $array 是要排序的物件數組,$compare_function 是定義比較的可呼叫函數邏輯。
範例:依名稱對物件排序
考慮以下物件陣列:
$array = [ (object) ['name' => 'Mary Jane', 'count' => 420], (object) ['name' => 'Johnny', 'count' => 234], (object) ['name' => 'Kathy', 'count' => 4354], ... ];
依名稱升序對陣列進行排序為了排序,定義以下比較函數:
function cmp($a, $b) { return strcmp($a->name, $b->name); }
此函數比較使用strcmp函數的兩個對象,如果 $a->name 大於 $b->name,則傳回 1,如果小於,則傳回 -1,如果相等,則傳回 0。
最後,使用比較函數呼叫 usort將陣列排序:
usort($array, 'cmp');
替代比較選項
除了使用自訂比較函數之外,usort還支援各種其他方法來定義比較邏輯,包括:
匿名函數(PHP 5.3 ):
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
類別方法:
usort($array, array($this, "cmp"));
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
對數值排序
usort($array, fn($a, $b) => $a->count <=> $b->count);
以上是如何依特定屬性對 PHP 中的物件數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!