开发者社区> 问答> 正文

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

我有这样的数组

数组( [0] => Array(“ destination” =>“ Sydney”, “ airlines” =>“ airline_1”, “ one_way_fare” => 100, “返回票价=> 300 ), [2] => Array(“ destination” =>“ Sydney”, “ airlines” =>“ airline_2”, “ one_way_fare” => 150, “返回票价=> 350 ), [3] => Array(“ destination” =>“ Sydney”, “ airlines” =>“ airline_3”, “ one_way_fare” => 180, “返回票价=> 380 ) ) 如何按return_fare asc和one_way_fare asc排序值?

我尝试了array_multisort(),但最终却得到了混乱的数据。

排序仅适用于一维数组,我需要按两个或多个值进行排序,我如何才能像SQL中那样实现此功能,按field1 asc,field2 asc排序? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 11:30:29 515 0
1 条回答
写回答
取消 提交回答
  • 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 volume descending, edition ascending array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $data); 如果您查看的PHP手册页array_multisort(),则可以在此注释中找到一个非常有用的array_orderby()函数,该函数可将上述内容简化为:

    $sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC); 为了避免循环使用array_column()(从PHP 5.5.0开始):

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

    2020-02-09 11:30:43
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载