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

如何以多個欄位值對 PHP 陣列進行排序?

Patricia Arquette
Patricia Arquette原創
2024-12-15 05:26:12878瀏覽

How to Sort a PHP Array by Multiple Field Values?

以多個欄位值對PHP 陣列進行排序

在PHP 中對具有多個值的陣列進行排序可能很棘手,但有幾種方法可以實現此目的。一個常見的解決方案是使用 array_multisort() 函數。

假設您有一個類似於問題中提供的數組:

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()如下:

// Obtain a list of columns
foreach ($data as $key => $row) {
    $return_fare[$key]  = $row['return_fare'];
    $one_way_fare[$key] = $row['one_way_fare'];
}

// Sort the data with return_fare descending, one_way_fare ascending
array_multisort($data, $return_fare, SORT_ASC, $one_way_fare, SORT_ASC);

這將對數組進行排序

另一個選擇是使用array_orderby() 函數,它提供了按多個條件排序的簡化語法:

$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);

為了避免循環,您也可以使用array_column() (PHP 5.5.0中提供)或更高版本)提取所需的列,然後對這些列使用 array_multisort():

array_multisort(
    array_column($data, 'return_fare'), SORT_ASC,
    array_column($data, 'one_way_fare'), SORT_ASC,
    $data
);

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

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