Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获得排名并列的分数?_Php - Fatal编程技术网

Php 如何获得排名并列的分数?

Php 如何获得排名并列的分数?,php,Php,各位。我是新来的,也是一个新的PHP程序员。我正在建立一个排名,希望你们能帮助我建立排名关系,因为在我试图找到完美的排名解决方案时,我一直坚持给出正确的排名。代码将解释我正在努力实现的目标: <?php if ($dados == "") { $totalWebservice1 = 0; $position = 1; $mat = ''; $id = ''; foreach ($resultAll as $dado) { $group

各位。我是新来的,也是一个新的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
2°       teste       2
2°       teste       2
2°       teste       2
3°       teste       1

问题是它将排名打印为
1,2,3,3,3,3
,而根据我的假设,它应该打印
1,2,2,2,3
。那么它如何打印
1,2,2,3
?哪里会出问题

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

除此之外,这种逻辑也有点古怪。尽量避免“无所事事”的情况

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

请发布所有相关代码(包括循环)。这里有一些变量,我们不知道它们是如何或在哪里填充的。对不起,伙计,所以我又添加了整个代码。Daan,非常感谢你,你知道了。
if ($dado['registration'] != $mat || $dado['name'] != $id) { // if not the same id.
    $position++; 
}