php二維數組排序方法(array_multisort usort)

高洛峰
發布: 2023-03-03 21:30:02
原創
2226 人瀏覽過

例如像下面的陣列:

$users = array(
    array('name' => 'tom', 'age' => 20)
    , array('name' => 'anny', 'age' => 18)
    , array('name' => 'jack', 'age' => 22)
);
登入後複製

希望能按照age從小到大進行排序。筆者整理了兩個方法出來,分享給大家。

1、使用array_multisort

使用這個方法,會比較麻煩些,要將age提取出來儲存到一維數組裡,然後按照age升序排列。具體程式碼如下:

$ages = array();
foreach ($users as $user) {
    $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
登入後複製

執行後,$users就是排序好的陣列了,可以印出來看看。如果需要先按年齡升序排列,再按照名稱升序排列,方法同上,就是多提取一個名稱數組出來,最後的排序方法這樣調用:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
登入後複製

2、使用usort

使用這個方法最大的好處就是可以自定義一些比較複雜的排序方法。例如依照名稱的長度降序排列:

usort($users, function($a, $b) {
            $al = strlen($a['name']);
            $bl = strlen($b['name']);
            if ($al == $bl)
                return 0;
            return ($al > $bl) ? -1 : 1;
        });
登入後複製

這裡使用了匿名函數,如果有需要也可以單獨提取出來。其中$a, $b可以理解為$users數組下的元素,可以直接索引name值,併計算長度,而後比較長度就可以了。

筆者喜歡第二種方法,因為少了提取排序內容到一維數組的步驟,而且排序方法更為靈活。

更多php二維數組排序方法(array_multisort usort)相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!