Php 计算平均成绩

Php 计算平均成绩,php,mysqli,datatable,Php,Mysqli,Datatable,我试图根据表中的数据计算出一个平均值。如果在用户插入数据之前没有数据,如何回显零 以下是我所做的 while($row = mysqli_fetch_array($result_final_grade)){ ?>

我试图根据表中的数据计算出一个平均值。如果在用户插入数据之前没有数据,如何回显零

以下是我所做的

                                              while($row = mysqli_fetch_array($result_final_grade)){ 
                                                ?>
                                                <tr>
                                                    <td class="text-center"> <?php echo $row['subject']; ?></td>
                                                    <td class="text-center"> <?php echo $row['grade']; ?></td>
                                                </tr>
                                            </tbody>
                                                <?php
                                                    global $total4, $sum4, $average4;
                                                     $total4+=$row['grade'];
                                                     $sum4++;
                                                    } ?>
                                        </table> 
                                        <?php $average4=($total4/$sum4);
                                            $average4 = number_format($average4, 0, '.', '');
                                         ?>
                                            AVERAGE GRADE: <?php echo $average4; ?>

如果没有表数据,则平均值等于0,但如果有表数据,则应计算平均值。

您非常接近。只需在循环之前将$total4、$sum4和$average4变量初始化为零。您不应该需要该全局行,即使您这样做了,它也不应该在while循环中。结束标记可能也不应该是

<?php

// initialize your variables before the loop
$total4 = 0;
$sum4 = 0;
$average4 = 0;

while($row = mysqli_fetch_array($result_final_grade)){ ?>
    <tr>
        <td class="text-center"> <?php echo $row['subject']; ?></td>
        <td class="text-center"> <?php echo $row['grade']; ?></td>
    </tr>
    <?php
    $total4 += $row['grade'];
    $sum4++;
} ?>
</tbody>
</table>
然后检查行数。如果不是零,计算平均值

<?php
if ($sum4) {
    $average4 = $total4/$sum4;
}
$average = number_format($average4, 0, '.', '');
?>
AVERAGE GRADE: <?php echo $average4; ?>

$result\u final\u grade->num\u rows将返回结果中的行数,检查num rows是否大于0,然后执行while,否则echo 0不客气!:-我刚才对它做了一点修改,认为如果我们在开始时将$average4设置为零,可能会更容易阅读。