开发者社区> 问答> 正文

如何按值对多维数组进行排序?

如何按“订单”键的值对该数组排序?即使这些值当前是连续的,也不会总是如此。

Array ( [0] => Array ( [hashtag] => a7e87329b5eab8578f4f1098a152d6f4 [title] => Flower [order] => 3 )

[1] => Array
    (
        [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
        [title] => Free
        [order] => 2
    )

[2] => Array
    (
        [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
        [title] => Ready
        [order] => 1
    )

)

展开
收起
保持可爱mmm 2020-01-13 16:15:45 396 0
1 条回答
写回答
取消 提交回答
  • 尝试使用usort,如果您仍然使用PHP 5.2或更早版本,则必须首先定义一个排序函数:

    function sortByOrder($a, $b) { return $a['order'] - $b['order']; }

    usort($myArray, 'sortByOrder');

    从PHP 5.3开始,您可以使用匿名函数:

    usort($myArray, function($a, $b) { return $a['order'] - $b['order']; });

    最后,在PHP 7中,您可以使用spaceship运算符:

    usort($myArray, function($a, $b) { return $a['order'] <=> $b['order']; });

    要将其扩展到多维排序,如果第二个/第三个排序元素为零,请参考第二个/第三个排序元素-下文将详细说明。您也可以使用它对子元素进行排序。

    usort($myArray, function($a, $b) { $retval = $a['order'] <=> $b['order']; if ($retval == 0) { $retval = $a['suborder'] <=> $b['suborder']; if ($retval == 0) { $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder']; } } return $retval; });

    问题来源于stack overflow

    2020-01-13 16:16:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载