对多维数组进行排序



我有一个像这样的数组:

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;
}

相关内容

  • 没有找到相关文章

最新更新