如何按值排序多维数组?

如何按值排序多维数组?

如何通过“order”键的值对此数组进行排序?尽管这些值目前是顺序的,但它们并不总是如此。

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
        ))


凤凰求蛊
浏览 575回答 4
4回答

慕仙森

尝试usort,如果你仍然在PHP 5.2或更早版本,你必须先定义一个排序函数:function&nbsp;sortByOrder($a,&nbsp;$b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$a['order']&nbsp;-&nbsp;$b['order'];}usort($myArray,&nbsp;'sortByOrder');从PHP 5.3开始,您可以使用匿名函数:usort($myArray,&nbsp;function($a,&nbsp;$b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$a['order']&nbsp;-&nbsp;$b['order'];});最后使用PHP 7,您可以使用太空船运营商:usort($myArray,&nbsp;function($a,&nbsp;$b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$a['order']&nbsp;<=>&nbsp;$b['order'];});要将其扩展到多维排序,如果第一个为零,则引用第二个/第三个排序元素 - 下面将对此进行最佳说明。您还可以使用它来对子元素进行排序。usort($myArray,&nbsp;function($a,&nbsp;$b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$retval&nbsp;=&nbsp;$a['order']&nbsp;<=>&nbsp;$b['order']; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($retval&nbsp;==&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retval&nbsp;=&nbsp;$a['suborder']&nbsp;<=>&nbsp;$b['suborder']; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($retval&nbsp;==&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$retval&nbsp;=&nbsp;$a['details']['subsuborder']&nbsp;<=>&nbsp;$b['details']['subsuborder']; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$retval;});如果需要保留关键关联,请使用uasort()- 请参阅手册中数组排序功能的比较

12345678_0001

function aasort (&$array, $key) {&nbsp; &nbsp; $sorter=array();&nbsp; &nbsp; $ret=array();&nbsp; &nbsp; reset($array);&nbsp; &nbsp; foreach ($array as $ii => $va) {&nbsp; &nbsp; &nbsp; &nbsp; $sorter[$ii]=$va[$key];&nbsp; &nbsp; }&nbsp; &nbsp; asort($sorter);&nbsp; &nbsp; foreach ($sorter as $ii => $va) {&nbsp; &nbsp; &nbsp; &nbsp; $ret[$ii]=$array[$ii];&nbsp; &nbsp; }&nbsp; &nbsp; $array=$ret;}aasort($your_array,"order");

幕布斯7119047

我用这个函数:function&nbsp;array_sort_by_column(&$arr,&nbsp;$col,&nbsp;$dir&nbsp;=&nbsp;SORT_ASC)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$sort_col&nbsp;=&nbsp;array(); &nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($arr&nbsp;as&nbsp;$key=>&nbsp;$row)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sort_col[$key]&nbsp;=&nbsp;$row[$col]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;array_multisort($sort_col,&nbsp;$dir,&nbsp;$arr);}array_sort_by_column($array,&nbsp;'order');

精慕HU

我通常使用usort,并传递我自己的比较函数。在这种情况下,它非常简单:function&nbsp;compareOrder($a,&nbsp;$b){ &nbsp;&nbsp;return&nbsp;$a['order']&nbsp;-&nbsp;$b['order'];}usort($array,&nbsp;'compareOrder');
打开App,查看更多内容
随时随地看视频慕课网APP