【发布时间】:2018-01-10 11:50:39
【问题描述】:
我在 php 中有以下代码来计算平均分数。它可以工作,但会产生错误的输出(逻辑错误)
代码
<p>Average Score</p>
<?php
$avg = 0;
foreach ($scores as $score) {
$avg += array_sum($score);
}
$avg /= count($scores);
echo "<tr> <td>$avg</td></tr>"
?>
期望的输出是 97.5(因为分数是 100,100,100 和 90),但它显示的是:100.25
更新 - 分数结构很重要
生成分数的代码的早期部分如下(为了阐明分数的结构 - 请注意,我不想要一个只生成一个数组并对其进行平均的答案,我可以这样做,而是希望它在这种情况下得到修复)
<?php
$a = new NewQuizScore;
$scores = $a->getScores($_SESSION['username']);
foreach ($scores as $score) {
echo ("<tr>");
echo ("<td>".$score[0]. "</td> ");
echo ("<td>".$score[1]. "</td> ");
echo ('<td><a href="certificate.php?name='.$score[0].'&score='.$score[1].'">Print Certificate</a></td>');
echo ("<td><a href=\"quiz-show.php?quiz=".$score[2]. "\">Take it again!</a></td> ");
echo ("</tr>");
}
?>
【问题讨论】:
-
在 for 循环中尝试
$avg += $score; -
更改 $avg += array_sum($score);到 $avg +=$score;
-
我试过了 - 如下所述,它只会导致页面无法加载
-
您可能希望将
array_column($scores,1)作为您的解决方案的一部分,使用array_sum()和count()。我认为它会使代码看起来更干净。