我有一个如下所示的数组:
Array ( [0] => Array ( [filters] => Array ( [filter_1] => 1
[filter_2] => 1
[filter_3] => 1
[filter_4] => 1
[filter_5] => 1
[filter_6] => 1 ),
[count] => 2),
[1] => Array ( [filters] => Array ( [filter_1] => 1
[filter_2] => 1
[filter_3] => 1
[filter_4] => 1
[filter_5] => 1
[filter_6] => 1 ),
[count] => 34)
[2] => Array ( [filters] => Array ( [filter_1] => 1
[filter_2] => 1
[filter_3] => 1
[filter_4] => 1
[filter_5] => 1
[filter_6] => 1 ),
[count] => 7)
是否可以通过每个中的[count]键对主数组键进行排序,降序?因此它们按以下顺序排列:1 -2 -0
答案 0 :(得分:5)
您需要使用uasort
功能。尝试这样的事情:
function cmp($a, $b) {
if ($a["count"] == $b["count"]) {
return 0;
}
return ($a["count"] > $b["count"]) ? -1 : 1;
}
uasort($array, 'cmp');
答案 1 :(得分:4)
您肯定需要usort功能。您可以定义sort函数如何确定哪个更大或更小。
如果每个子阵列(“过滤器”和“计数”)都被重新编入索引,那么这应该是完美的。通过重新索引,我的意思是新排序的数组将从0开始,进展到1,等等。除非原始数组是关联的,否则这几乎总是如你所愿。
例如:
usort($array, "byCount");
function byCount($a, $b)
{
if( $a['count'] == $b['count'] )
{
return 0;
}
return ($a['count'] < $b['count']) ? -1 : 1;
}