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

php怎麼給二維數組排序

Apr 17, 2023 pm 04:37 PM

在開發中,我們經常需要對資料進行排序,以便更好地呈現和使用。對於二維數組,排序可以依照某一個資料欄位來進行。本文將介紹如何使用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['age']) ? -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

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP數組去重有哪些最佳實踐 PHP數組去重有哪些最佳實踐 Mar 03, 2025 pm 04:41 PM

PHP數組去重有哪些最佳實踐

PHP數組去重可以利用鍵名唯一性嗎 PHP數組去重可以利用鍵名唯一性嗎 Mar 03, 2025 pm 04:51 PM

PHP數組去重可以利用鍵名唯一性嗎

PHP數組去重需要考慮性能損耗嗎 PHP數組去重需要考慮性能損耗嗎 Mar 03, 2025 pm 04:47 PM

PHP數組去重需要考慮性能損耗嗎

PHP數組去重有哪些優化技巧 PHP數組去重有哪些優化技巧 Mar 03, 2025 pm 04:50 PM

PHP數組去重有哪些優化技巧

如何在PHP中實現消息隊列(RabbitMQ,REDIS)? 如何在PHP中實現消息隊列(RabbitMQ,REDIS)? Mar 10, 2025 pm 06:15 PM

如何在PHP中實現消息隊列(RabbitMQ,REDIS)?

最新的PHP編碼標準和最佳實踐是什麼? 最新的PHP編碼標準和最佳實踐是什麼? Mar 10, 2025 pm 06:16 PM

最新的PHP編碼標準和最佳實踐是什麼?

我如何處理PHP擴展和PECL? 我如何處理PHP擴展和PECL? Mar 10, 2025 pm 06:12 PM

我如何處理PHP擴展和PECL?

如何使用反射來分析和操縱PHP代碼? 如何使用反射來分析和操縱PHP代碼? Mar 10, 2025 pm 06:12 PM

如何使用反射來分析和操縱PHP代碼?

See all articles