我有一个像这样的数组:
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
您需要使用uasort
函数。试试这样做:
function cmp($a, $b) {
if ($a["count"] == $b["count"]) {
return 0;
}
return ($a["count"] > $b["count"]) ? -1 : 1;
}
uasort($array, 'cmp');
您肯定需要ussort函数。您可以定义排序函数如何确定哪个较大或较小。
如果每个子数组("filters"one_answers"count")被重新索引是正确的,这应该完美地工作。通过重新索引,我的意思是新排序的数组将从0开始,进展到1,等等。这几乎总是你想要的,除非你的原始数组是关联的。
例如:usort($array, "byCount");
function byCount($a, $b)
{
if( $a['count'] == $b['count'] )
{
return 0;
}
return ($a['count'] < $b['count']) ? -1 : 1;
}