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

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

Barbara Streisand
發布: 2024-12-27 03:08:17
原創
555 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板