这是计分板的简化代码。我要构建的表是根据总分自动对自身进行排序的表,并为最低分数分配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);
现在,我在下面得到此输出。它仅显示数组index ['0'],这就是为什么在所有输出中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/>';
}
最佳答案
使用PHP的rsort()
的语法如下:
bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
因此,执行行
echo rsort($ordered_values)
将在succus(回显为true
)上评估为1
,而在失败(回显false
)上评估为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()
将产生以下结果:13389- Rank: 9
71298- Rank: 10
234- Rank: 1
9069- Rank: 6
9936- Rank: 7
2673- Rank: 5
234- Rank: 1
234- Rank: 1
11634- Rank: 8
1470- Rank: 4
关于php - 动态计分表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33128781/