我有一组玩家,每个玩家都有很多分数。
我可以使用自定义 usort 函数轻松地按点的顺序对数组进行排序。
但是当两个玩家的分数相同时,我需要将他们排在列表中相同的获胜位置。
例如
- 尼克 - 25 岁
- 汤姆 - 18 岁
- 克里斯 - 18 岁
- 戴夫 - 16 岁
- 詹姆斯 - 8
在这种情况下,我需要的数据是
- 尼克 - 第一名
- Tom -(联合)第二名
- Chris -(联合)第二名
- 戴夫 3rd
- 詹姆斯四世
因此得分相同的玩家被指定为相同的排名位置。
计算这些位置的最佳方法是什么?
谢谢!
最佳答案
这会给你一个额外的修复你想要的东西:如果你有两个玩家在位置 2,下一个玩家应该在位置 4。如果你不想要这个额外的修复移动 $count++;
到 if 语句中。
$count = 0;
$position = 0;
$last_score = -1;
foreach ($players as $player)
{
$count++;
if ($last_score !== $player->score)
{
$position = $count;
}
$player->position = $position;
$last_score = $player->score;
}
关于PHP排序数组联合位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48379321/