首頁 >後端開發 >php教程 >如何依特定屬性對 PHP 中的物件數組進行排序?

如何依特定屬性對 PHP 中的物件數組進行排序?

Barbara Streisand
Barbara Streisand原創
2024-12-27 03:08:17629瀏覽

How Can I Sort an Array of Objects in PHP by a Specific Property?

依屬性對物件陣列進行排序

在各種程式設計場景中都會遇到物件陣列。這些物件擁有多個屬性,例如名稱和計數。根據特定屬性組織這些物件通常很有用。

自訂比較函數: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中文網其他相關文章!

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