我正在尝试根据将要输出的表数据计算平均值。如果在用户插入数据之前没有数据,我该如何回零?
这就是我所做的。
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,但是当有表数据时,应计算平均值。
答案 0 :(得分:1)
您非常接近。只需在循环之前将$total4
,$sum4
和$average4
变量初始化为零即可。您不需要该global
行,即使您这样做也不应该在while循环内。 (结束的</tbody>
标签也不应该是。)
<?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; ?>