这是记分板的简化代码。我想要构建的是一个表格,它自动按总分数排序,并为最低分数指定等级1,增量从那里排名直到每个人都有等级。如果2个人具有相同的分数,则排名将是T,然后是数字。
<?php
$sql_score = $mysqli->query("SELECT * from event_scoreboard WHERE workoutid = '$work_out[$workout_counter]'");
$rowcount1=mysqli_num_rows($sql_score);
$array = array();
while($objscore = $sql_score->fetch_object()) {
$score = $objscore->score;
$total_score += $score * 3;
}
$values = array($total_score);
$ordered_values = $values;
echo rsort($ordered_values);
foreach ($values as $key => $value) {
foreach ($ordered_values as $ordered_key => $ordered_value) {
if ($value === $ordered_value) {
$key = $ordered_key;
break;
}
}
echo $value . '- Rank: ' . ((int) $key + 1) . '<br/>';
}
?>
下面的测试代码工作正常,但是如何通过将while条件的输出插入到多维数组中来实现相同的输出 恩。 $ values = array($ total_score);
现在,我在下方输出此输出。它只显示数组索引[&#39; 0&#39;],这就是所有输出中Rank为1的原因。
13087 - Rank: 1
11029 - Rank: 1
110359 - Rank: 1
17035 - Rank: 1
19702 - Rank: 1
1702 - Rank: 1
196 - Rank: 1
19 - Rank: 1
110266 - Rank: 1
根据分数显示排名的工作示例(目前DESC但需要按ASC顺序排列 - 最低分数为排名#1)
$values = array();
$values[0] = 13389;
$values[1] = 71298;
$values[2] = 234;
$values[3] = 9069;
$values[4] = 9936;
$values[5] = 2673;
$values[6] = 234;
$values[7] = 234;
$values[8] = 11634;
$values[9] = 1470;
$ordered_values = $values;
echo rsort($ordered_values);
foreach ($values as $key => $value) {
foreach ($ordered_values as $ordered_key => $ordered_value) {
if ($value === $ordered_value) {
$key = $ordered_key;
break;
}
}
echo $value . '- Rank: ' . ((int) $key + 1) . '<br/>';
}
答案 0 :(得分:0)
使用PHP rsort()
的语法如下:
$ javac Legacy.java
Legacy.java:11: error: stream() in Legacy cannot implement stream() in MyCollection
public void stream()
^
return type void is not compatible with Stream<String>
1 error
因此,执行行bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
将评估为echo rsort($ordered_values)
上的成功(回复为true
)或1
失败(回显false
)。< / p>
如果你0
print_r()
数组,你会注意到它实际上是按相反顺序排序的:
$ordered_values
意味着排名最低的数字最终会出现。
注意:我认为您实际上与您从代码中得到的结果相反。不确定为什么你不会使用//the output I got
Array ( [0] => 71298 [1] => 13389 [2] => 11634 [3] => 9936 [4] => 9069 [5] => 2673 [6] => 1470 [7] => 234 [8] => 234 [9] => 234 )
的反面,即rsort()
来达到你想要的结果。
从sort()
更改为rsort()
会产生以下结果:
sort()
答案 1 :(得分:0)
我不明白为什么你需要多维数组的复杂性。为什么不在$ value数组上使用asort?这将按值从低到高对$ value数组进行排序,并保持关键关联。