所有人。我是这里的新手,也是PHP的新程序员。我正在建立一个排名,并希望你们帮助我建立排名关系,因为在试图找到具有排名关系的完美排名解决方案时,我一直坚持给出正确的排名。代码将说明我正在努力实现的目标:
<?php
if ($dados == "") {
$totalWebservice1 = 0;
$position = 1;
$mat = '';
$id = '';
foreach ($resultAll as $dado) {
$group = $insert->selectGrupo($dado['codClient']);
if ($dado['codClient'] == $group['id_sponte'] && $group['group'] == 'yellow' && $topOne['codClient'] != $dado['codClient']) {
$totalWebservice1 = $totalWebservice1 + $dado['registration'];
?>
<tr>
<td><?php echo $position?>º</td>
<td><?php echo $dado['name'] ?></td>
<td><?php echo $dado['registration'] ?></td>
<?php
if ($dado['registration'] != $mat || $dado['name'] != $id) { // if not the same id.
$position++;
}
?>
</tr>
<?php
$mat = $dado['registration'];
$id = $dado['name'];
}
}
} else {
$totalMatriculas1 = 0;
?>
输出:
Position Name Registration
1° teste 4
2° teste 2
3° teste 2
3° teste 2
3° teste 2
3° teste 1
预期输出:
Position Name Registration
1° teste 4
2° teste 2
2° teste 2
2° teste 2
2° teste 2
3° teste 1
问题是它按照我的假设将排名打印为1,2,3,3,3,3
,而应该将1,2,2,2,2,3
打印。那么如何打印1,2,2,3
?哪里可能出问题了?
答案 0 :(得分:1)
if
语句位于回显之后,因此您正在为下一次迭代做准备,这就是为什么计数为一次性的原因。
除此之外,逻辑有点不稳定。尝试避免“什么都不做”的情况。
if ($dado['registration'] != $mat || $dado['name'] != $id) { // if not the same id.
$position++;
}