我有以下代码:
while($row12 = mysql_fetch_array($result12)) {
$position = $row12['position'];
$tot[$k] = $row12['total'];
$k++;
}
$arr = arsort($tot);
for($x = 0; $x < $k; $x++) {
echo $tot[$x]."<br>";
}
我能够从数据库记录中创建总计数组,但需要按降序对值进行排序。
例如,在排序之前:
- 107
- 563
- 109
- 246
- 897
并在排序后:
- 897
- 563
- 246
- 109
- 107
答案 0 :(得分:0)
arsort维护数组键,因此如果您以
开头0 => 100
1 => 50
2 => 75
3 => 25
你最终会得到
0 => 100
2 => 75
1 => 50
3 => 25
表面上看似乎是你想要的。问题是,您正在循环浏览这些内容并在for($x = 0; $x < $k; $x++)
循环中以键顺序 0,1,2,3显示它们。
对此的一个解决方案是使用foreach
代替:
foreach ($tot as $number_to_display) {
echo $number_to_display . "<br>";
}
将以数组顺序循环遍历它们,而不是在您尝试时按顺序遍历键。
正如已经评论过的那样,更好的解决方案是在SQL中使用排序条件,例如:
ORDER BY total DESC