首頁 >後端開發 >PHP問題 >php怎麼給二維數組排序

php怎麼給二維數組排序

PHPz
PHPz原創
2023-04-17 16:37:235160瀏覽

在開發中,我們經常需要對資料進行排序,以便更好地呈現和使用。對於二維數組,排序可以依照某一個資料欄位來進行。本文將介紹如何使用PHP給二維數組進行排序。

一、使用sort()函數對二維陣列排序

sort()是PHP的內建函數,能夠依照升序對陣列中的值進行排序。當二維數組排序時,sort()函數預設會依照陣列的第一個欄位進行排序。例如,我們有一個二維陣列:

$arr = array(
     array('id'=>2,'name'=>'li', 'age'=>20),
     array('id'=>1,'name'=>'zhang', 'age'=>22),
     array('id'=>3,'name'=>'wang', 'age'=>18)
);

我們可以使用sort()函數來依照id欄位進行排序:

sort($arr);
print_r($arr);

輸出結果為:

Array
(
    [0] => Array
        (
            [age] => 18
            [id] => 3
            [name] => wang
        )

    [1] => Array
        (
            [age] => 20
            [id] => 2
            [name] => li
        )

    [2] => Array
        (
            [age] => 22
            [id] => 1
            [name] => zhang
        )

)

可以看出,依照id字段進行排序後,數組中的元素依升序排列。

二、使用usort()函數對二維陣列排序

sort()函數只能依照陣列的第一個欄位排序,如果要依照其他欄位進行排序,就需要使用usort()函數。 usort()函數需要傳入一個自訂的回呼函數,用於指定排序的規則。例如,我們要依照age欄位進行排序:

function cmp($a, $b)
{
    if ($a['age'] == $b['age']) {
        return 0;
    }
    return ($a['age'] <$ b[&#39;age&#39;]) ? -1 : 1;
}

usort($arr, "cmp");
print_r($arr);

輸出結果為:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

可以看出,依照age欄位進行排序後,陣列中的元素會依照年齡升序排列。

三、使用array_multisort()函數對二維數組排序

array_multisort()函數是一個非常強大的排序函數,可以依照多個條件對二維數組進行排序。如果想按照多個欄位進行排序,可以使用array_multisort()函數。例如,我們要先依照age欄位排序,如果age相同,則依照id排序:

$ages = array();
$ids = array();
foreach ($arr as $key => $value) {
    $ages[$key] = $value['age'];
    $ids[$key] = $value['id'];
}
array_multisort($ages, SORT_ASC, $ids, SORT_ASC, $arr);

print_r($arr);

輸出結果為:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

可以看出,依照age欄位和id欄位進行排序後,數組中的元素依年齡升序排列,age相同時依id進行升序排列。

總結:

本文介紹了三種方法來對二維陣列進行排序,分別是使用sort()函數、usort()函數和array_multisort()函數。在開發中,選擇哪一種方式取決於具體的需求。希望本文對大家有幫助。

以上是php怎麼給二維數組排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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