【发布时间】:2017-10-14 22:40:28
【问题描述】:
我有一个多维数组,我想根据“评级”进行排序......但我也希望索引从 1 开始,这是我在手动创建这些数组时使用的。当我使用 usort 时,它会重新排列数组,但现在它们从索引 0 开始,所以我不能从 1 - 6 循环,因为 6 在排序后未定义。
我的 $array 从 1 开始更简洁,所以 $player[$i] 代表实际的玩家编号。这是我的数组在排序之前的样子
$player[1]['rating'] = 8
$player[2]['rating'] = 5
$player[3]['rating'] = 10
这是我的排序功能:
function sortByrating($a, $b) {
if ($a['rating'] == $b['rating']) {
return 0;
}
return ($a['rating'] < $b['rating']) ? -1 : 1;
}
我叫它
usort($player, 'sortByRating');
【问题讨论】:
-
“玩家编号”意味着应该保留一个关联? IE。拥有密钥
1的人在排序后仍应拥有密钥1,但该密钥可能在其他地方排序?在这种情况下,您应该使用uasort。 – 否则,如果1仅用于输出“1.”,则此处应不向后弯腰;数组是零索引的,句号,在需要时添加+ 1用于视觉输出。 -
可能应该只使用
foreach()循环或从 0 开始for()循环。
标签: php arrays sorting multidimensional-array usort