【发布时间】:2021-04-02 18:07:58
【问题描述】:
我有一个多维数组,其中包含篮球运动员的数据及其统计数据。我想按统计类别之一对该数组进行排序。如何对数组进行排序?
作为一个小例子,让我们使用以下三个数组,它们是更大数组的一部分:
$playername = array();
$team = array();
$pts = array();
它们被添加到 playerdata 数组中:
$data = array(
'playername' => $playername,
'team' => $team,
'pts' => $pts
);
例如数据数组由三个玩家组成:
- [0] -> 玩家 A,团队 A,10
- [1] -> 玩家 B,团队 B,20
- [2] -> 玩家 C,团队 C,5
我现在想按照$pts数组的内容对数组$data进行排序,最后$data的顺序是:
- [0] -> 玩家 B,团队 B,20
- [1] -> 玩家 A,团队 A,10
- [2] -> 玩家 C,团队 C,5
我怎样才能做到这一点?
编辑:我尝试使用在另一个问题/答案中阅读的解决方案,但无法真正做到我想要的:
usort($array, function($a, $b) {
return $a['pts'] <=> $b['pts'];
});
【问题讨论】:
-
见usort()。
-
我在其他问题/答案中阅读了有关 usort() 的信息,但无法真正让它发挥作用。我使用了其他地方提出的建议。我将代码编辑到我的问题中。
-
您的数组中不存在
order键,请尝试pts -
复制到这里时只是复制粘贴错误。我用pts试了一下,还是不行。值仍然是默认顺序,而不是按“pts”排序,而且我不能再使用
$data['playername'][$i]来访问玩家名的值。 -
好吧,我调查了一下:他实际上做了一些“排序”。但是,他没有按“pts”的值进行排序,而是重新排列了数组的顺序,所以现在的顺序是“playername”、“pts”、“team”,而不是“playername”、“team”、“pts”。
标签: php arrays multidimensional-array