PHP排序关联数组

时间:2015-01-05 22:07:07

标签: php arrays sorting

我有一个像这样的关联数组:

$teams_name_points = array();

$name1 = "name1";
$name2 = "name2";
$teams_name_points[$name1] = 1;
$teams_name_points[$name2] = 2;

我想按键值对此数组进行排序,目前按键按字母顺序排序。

我试图实现自己的排序功能,但我不太明白它是如何工作的。

usort($teams_name_points, 'cmp');

function cmp(array $a, array $b){
    if ($a['foo'] < $b['foo']) {
        return -1;
    } else if ($a['foo'] > $b['foo']) {
        return 1;
    } else {
        return 0;
    }
}

如何让比较方法与我的数组一起使用?

3 个答案:

答案 0 :(得分:4)

使用asort()对数组进行排序。

http://php.net/manual/en/function.asort.php

  

此函数对数组进行排序,以使数组索引与它们关联的数组元素保持相关性。这主要用于排序实际元素顺序很重要的关联数组。

答案 1 :(得分:1)

$teams_name_points = array();

$name1 = "name1";
$name2 = "name2";
$teams_name_points[$name1] = 2;
$teams_name_points[$name2] = 1;
print_r($teams_name_points);
asort($teams_name_points); // sort by value low to high
print_r($teams_name_points);
arsort($teams_name_points); // sort by value high to low
print_r($teams_name_points);

答案 2 :(得分:0)

简单地说,as per the manual,你只想接受数组的作为cmp()的参数。

E.g。

cmp($earlier_array_value, $later_array_value){
    ...
}

另外,当然,请注意usort()仅在您运行自定义且非数字直接比较时才有必要。使用existing native sort functions可以更轻松地通过><进行简单比较。