以多個欄位值對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中文網其他相關文章!