首頁  >  文章  >  後端開發  >  使用 PHP 對陣列中的物件進行排序,保留原始鍵名

使用 PHP 對陣列中的物件進行排序,保留原始鍵名

PHPz
PHPz原創
2024-05-04 17:12:02420瀏覽

答案:在 PHP 中,使用 uasort() 函數可以將陣列中的物件根據使用者定義的比較函數進行排序,同時保留原始鍵名。詳細描述:語法:uasort($array, $value_compare_func)比較函數規則:接受兩個數組元素作為參數返回-1 表示第一個參數小於第二個參數返回0 表示兩個參數相等返回1 表示第一個參數大於第二個參數實戰案例:定義一個Student 類別來表示學生物件使用uasort() 函數依照學生的年齡對$students 陣列進行排序,同時保留原始鍵名

使用 PHP 对数组中的对象进行排序,保留原始键名

#使用PHP 對陣列中的物件進行排序

在PHP 中,您可以使用uasort() 函數對陣列中的物件進行排序,同時保留原始鍵名。此函數使用使用者提供的比較函數,將陣列元素按升序或降序排序。

語法

uasort ( array &$array, callable $value_compare_func ) : bool

##其中:

  • #$array 是要排序的數組,傳遞參考以便直接修改
  • $value_compare_func 是使用者提供的比較函數,它接受兩個值作為參數,按升序或降序傳回它們的比較結果
比較函數

比較函數應遵循以下規則:

    接收兩個陣列元素作為參數
  • 傳回下列值之一:

      -1:第一個參數小於第二個參數
    • 0:兩個參數相等
    • 1:第一個參數大於第二個參數
#實戰案例

考慮一個包含學生物件的數組,每個學生都有姓名和年齡屬性。我們要將學生依年齡升序排序,同時保留原始鍵名。

代碼

<?php

class Student
{
    public $name;
    public $age;

    public function __construct($name, $age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}

$students = [
    "John Doe" => new Student("John Doe", 25),
    "Jane Smith" => new Student("Jane Smith", 22),
    "Peter Parker" => new Student("Peter Parker", 28)
];

uasort($students, function ($a, $b) {
    return $a->age <=> $b->age;
});

print_r($students);

輸出

Array
(
    [Jane Smith] => Student Object
        (
            [name] => Jane Smith
            [age] => 22
        )
    [John Doe] => Student Object
        (
            [name] => John Doe
            [age] => 25
        )
    [Peter Parker] => Student Object
        (
            [name] => Peter Parker
            [age] => 28
        )
)

正如您所看到的,學生已經按年齡升序排列,並且原始鍵名仍然存在。

以上是使用 PHP 對陣列中的物件進行排序,保留原始鍵名的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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