我有一个需要排序的多维数组。我希望这个数组首先根据从高到低的计数排序。但当计数值相同时,按城市字母排序。我不知道该怎么做。
多维数组:
Array
(
[0] => Array
(
[id] => 2
[city] => c
[count] => 5
)
[1] => Array
(
[id] => 3
[city] => b
[count] => 10
)
[2] => Array
(
[id] => 4
[city] => a
[count] => 5
)
)
有什么想法吗?
编辑:
这就是我想要的结果:
Array
(
[0] => Array
(
[id] => 3
[city] => b
[count] => 10
)
[1] => Array
(
[id] => 4
[city] => a
[count] => 5
)
[2] => Array
(
[id] => 2
[city] => c
[count] => 5
)
)
发布于 2014-02-12 11:42:08
我通常就是这样做的..。
$test = array(array('id'=> '2', 'city'=> 'c', 'count' => '5'),array('id'=> '3', 'city'=> 'b', 'count' => '10'),array('id'=> '4', 'city'=> 'a', 'count' => '5'));
function cmp($a, $b){
if($a['count'] == $b['count']){
if($a['city'] == $b['city']){
return 0;
}return $a['city'] < $b['city'] ? -1 : 1;
}else{
return $a['count'] > $b['count'] ? -1 : 1;
}
}
uasort($test , 'cmp');
结果
Array
(
[1] => Array
(
[id] => 3
[city] => b
[count] => 10
)
[2] => Array
(
[id] => 4
[city] => a
[count] => 5
)
[0] => Array
(
[id] => 2
[city] => c
[count] => 5
)
)
发布于 2014-02-12 11:08:26
将usort
与用户定义的函数一起使用,如:
function($a, $b) {
if($a['count'] === $b['count']) {
if($a['city'] === $b['city']) {
return 0;
}
return $a['city'] < $b['city'] ? -1 : 1;
} else {
return $a['count'] < $b['count'] ? -1 : 1;
}
}
发布于 2014-02-12 11:05:56
PHP有许多不同的方法,甚至有一个很好的概述页面来解决这类问题:http://www.php.net/manual/en/array.sorting.php。
一旦您找到了一个方法,并在执行它时遇到了困难,那么您可以问一个更具体的问题。
https://stackoverflow.com/questions/21726060
复制相似问题