首頁 > 後端開發 > php教程 > 如何按多個欄位對多維 PHP 陣列進行排序?

如何按多個欄位對多維 PHP 陣列進行排序?

Patricia Arquette
發布: 2024-11-20 03:07:01
原創
685 人瀏覽過

How to Sort a Multidimensional PHP Array by Multiple Fields?

在 PHP中以多個欄位值對數組進行排序

問題:

你有一個資料結構複雜的數組,需要根據多個字段值進行升序排序

示例:

考慮以下數組:

$array = [
    [
        "destination" => "Sydney",
        "airlines" => "airline_1",
        "one_way_fare" => 100,
        "return_fare" => 300
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_2",
        "one_way_fare" => 150,
        "return_fare" => 350
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_3",
        "one_way_fare" => 180,
        "return_fare" => 380
    ]
];
登入後複製

您希望按第一個“return_fare”升序對該數組進行排序然後按“one_way_fare”也按升序排列

解決方案:

要依照描述對陣列進行排序,可以使用array_multisort() 函數。但是,它要求您將要排序的值提取到單獨的陣列中。這可以使用 array_column() 來完成。

// Extract "return_fare" and "one_way_fare" into separate arrays
$return_fare = array_column($array, 'return_fare');
$one_way_fare = array_column($array, 'one_way_fare');

// Sort the array using multiple criteria
array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $array);
登入後複製

排序後,$array 將被修改以反映排序順序。

替代解決方案:

您也可以使用PHP 手冊頁中的array_orderby() 函數來簡化上述操作碼:

// Sort the array using "array_orderby"
$sorted = array_orderby($array, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
登入後複製

注意:

如果您使用的是PHP 5.5 或更高版本,您可以透過直接使用 array_column() 和 array_multisort() 來避免循環:

array_multisort(
    array_column($array, 'return_fare'), SORT_ASC,
    array_column($array, 'one_way_fare'), SORT_ASC,
    $array
);
登入後複製

以上是如何按多個欄位對多維 PHP 陣列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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