如何按值排序多维数组?如何通过“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
))
4 回答
![?](http://img1.sycdn.imooc.com/533e4d510001c2ad02000200-100-100.jpg)
慕仙森
TA贡献1827条经验 获得超8个赞
尝试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,您可以使用太空船运营商:
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;});
如果需要保留关键关联,请使用uasort()
- 请参阅手册中数组排序功能的比较
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
12345678_0001
TA贡献1802条经验 获得超5个赞
function aasort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii]=$va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
aasort($your_array,"order");
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
幕布斯7119047
TA贡献1794条经验 获得超8个赞
我用这个函数:
function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) { $sort_col = array(); foreach ($arr as $key=> $row) { $sort_col[$key] = $row[$col]; } array_multisort($sort_col, $dir, $arr);}array_sort_by_column($array, 'order');
- 4 回答
- 0 关注
- 574 浏览
添加回答
举报
0/150
提交
取消