我有一个像这样的关联数组:
$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;
}
}
如何让比较方法与我的数组一起使用?
答案 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可以更轻松地通过>
或<
进行简单比较。