如何获得排名并列分数?

时间:2019-05-06 13:26:06

标签: php

所有人。我是这里的新手,也是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?哪里可能出问题了?

1 个答案:

答案 0 :(得分:1)

if语句位于回显之后,因此您正在为下一次迭代做准备,这就是为什么计数为一次性的原因。

除此之外,逻辑有点不稳定。尝试避免“什么都不做”的情况。

if ($dado['registration'] != $mat || $dado['name'] != $id) { // if not the same id.
    $position++; 
}