PHP排序关联数组

PHP排序关联数组,php,arrays,sorting,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

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

$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;
    }
}
如何使compare方法与我的数组一起工作?

很简单,您只需要接受数组的值作为cmp的参数

例如

当然,还要注意,只有在运行自定义的比较而不是直接的数字比较时,才保证使用usort。通过>或进行简单比较非常简单,您只需要接受数组的值作为cmp的参数

例如

当然,还要注意,只有在运行自定义的比较而不是直接的数字比较时,才保证使用usort。通过>或进行的简单比较使用asort对数组进行排序

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

使用asort对数组进行排序

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


这对你有好处吗?另外,请说明你获得了什么样的产出以及你的目标是什么!这对你有好处吗?另外,请说明你获得了什么样的产出以及你的目标是什么!这是按价值而不是按价值排序的key@Rizier123op说我想按键值对数组进行排序,目前它是按键的字母顺序排序的。-所以我假设按值排序和维护键是他想要的,如果按键排序是他不想要的当前位置。我也明白了@马库斯:阅读文档,如果你能阅读php.net/manual/en/array.sorting.phpAnd tbh:对键/值数组进行排序,其中键是玩家的名字,值是适合asort的分数。构建、排序、迭代->排名。按值排序,而不是按key@Rizier123op说我想按键值对数组进行排序,目前它是按键的字母顺序排序的。-所以我假设按值排序和维护键是他想要的,如果按键排序是他不想要的当前位置。我也明白了@马库斯:阅读文档,如果你能阅读php.net/manual/en/array.sorting.phpAnd tbh:对键/值数组进行排序,其中键是玩家的名字,值是适合asort的分数。构建、排序、迭代->排名。同样正确的答案,但我只能接受一个,所以你先生有我的投票权。同样正确的答案,但我只能接受一个,所以你先生有我的投票权
cmp($earlier_array_value, $later_array_value){
    ...
}
$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);