如何按多个字段对 PHP 数组进行排序?

Susan Sarandon
发布: 2024-11-22 10:18:11
原创
494 人浏览过

How to Sort a PHP Array by Multiple Fields?

PHP:按多个字段值对数组进行排序

问题:

如何在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板