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

Patricia Arquette
发布: 2024-11-20 03:07:01
原创
633 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板