【问题标题】:Computing Average Grade计算平均成绩
【发布时间】:2019-08-25 14:45:24
【问题描述】:

我正在尝试根据将要输出的表格数据计算平均值。如果在用户插入数据之前没有数据,我如何回显零?

这就是我所做的。

                                              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,但如果有表格数据,则应计算平均值。

【问题讨论】:

  • $result_final_grade-&gt;num_rows会返回结果中的行数,检查num rows是否大于0然后执行while,否则回显0

标签: php mysqli datatable


【解决方案1】:

你已经很接近了。只需在循环前将$total4$sum4$average4 变量初始化为零。你不应该需要 global 行,即使你这样做也不应该在 while 循环内。 (结束 &lt;/tbody&gt; 标记可能也不应该是。)

<?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; ?>

【讨论】:

  • 不客气! :-) 我刚刚改了一点,想如果我们在开头也将$average4 设置为零可能会更容易阅读。
猜你喜欢
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
相关资源
最近更新 更多