我有一个看起来像这样的数组:
Array
(
[team1] => Array
(
[points] => 10
[players] => Array
(
...
)
)
[team2] => Array
(
[points] => 23
[players] => Array
(
...
)
)
... many more teams
)
我想按每支球队的得分对球队进行排序。我试过这个:
function sort_by_points($a,$b)
{
if ($a['points']==$b['points']) return 0;
return ($a['points']<$b['points'])?1:-1;
}
usort($this->wordswithdata, "sortbycount");
但是这种方法会覆盖包含团队名称的键并返回:
Array
(
[0] => Array
(
[points] => 23
[players] => Array
(
...
)
)
[1] => Array
(
[points] => 10
[players] => Array
(
...
)
)
etc...
)
有什么方法可以在不将团队名称覆盖为数组键的情况下对数组进行排序吗?
原文由 acrmuui 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 uasort 函数,它应该保持 key => value 关联完整。
(旁注:你可以做
return $a['points'] - $b['points']
而不是 ifs)