按值sortingmultidimensional array

可能重复:
如何在PHP中对multidimensional arraysorting

我怎样才能sorting这个数组的“订单”键的价值? 即使这些值目前是连续的,但并不总是如此。

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

尝试使用一个usort :如果您仍然使用PHP 5.2或更早的版本,则必须先定义一个sorting函数:

 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']; }); 

要将其扩展到多维sorting,请参阅第二个/第三个sorting元素(如果第一个sorting元素为零) – 最好在下面解释。 你也可以使用它来对子元素进行sorting。

 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() – 请参阅手册中数组sortingfunction的比较

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

我使用这个function:

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

我通常使用usort ,并通过我自己的比较function。 在这种情况下,这非常简单:

 function compareOrder($a, $b) { return $a['order'] - $b['order']; } usort($array, 'compareOrder'); 
 $sort = array(); $array_lowercase = array_map('strtolower', $array_to_be_sorted); array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $alphabetically_ordered_array); 

这照顾大写和小写字母。