问题:
如何在 PHP 中对数组进行排序两个或多个字段值,类似于使用“ORDER BY”子句SQL?
示例数组:
$data = [ [ "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"。
答案:
按多个字段值对数组进行排序的正确 PHP 函数是 array_multisort()。以下是如何实现所需排序的示例:
// Extract the relevant columns $return_fare = array_column($data, 'return_fare'); $one_way_fare = array_column($data, 'one_way_fare'); // Sort the array array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $data);
使用 array_orderby() 简化用法
您可以使用 array_orderby() 函数简化代码: PHP 手册:
$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
数组与数组(循环与 array_column())
如果您的数组包含数组,您可以在排序之前使用循环提取相关值:
$return_fare = []; $one_way_fare = []; foreach ($data as $row) { $return_fare[] = $row['return_fare']; $one_way_fare[] = $row['one_way_fare']; }
或者,如果使用 PHP 5.5或更高版本,您可以使用 array_column():
array_multisort(array_column($data, 'return_fare'), SORT_ASC, array_column($data, 'one_way_fare'), SORT_ASC, $data);
以上是如何按多个字段对 PHP 数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!