php创建平均分数以显示

时间:2018-01-10 10:38:05

标签: php average display

php的新手,在我深入研究语言之前尝试解决快速问题,我有以下代码,但希望它只显示生成的所有分数的 AVERAGE

<p>Average Score</p>
                <?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 ("</tr>");
                }



                ?>   

目前显示的分数如下所示。

1-Python Basics 100 1-Python Output 100 2-Python Output 90 3-Variables and User Input 100

是否有人能够发布最有效的方法来创建变量来存储平均值并将其显示在屏幕上。在上面的例子中,它将产生分数100,100,90和100

的平均值

我尝试使用代码来删除“”但是导致页面根本没有加载。

更新 使用下面的答案,我使用下面的,但平均显示为:101.25而不是97.5

<p>Average Score</p>
                <?php
                $avg = 0;
                foreach ($scores as $score) {
                $avg += array_sum($score);
                }
                $avg /= count($scores);
                echo "<tr> <td>$avg</td></tr>"



                ?>
                <p></br></br></br></br></p>

3 个答案:

答案 0 :(得分:0)

显示平均值你试试这个

$total=0;
foreach ($scores as $score) {
         $total=$total+$score;
}
$average= ($total/sizeof($scores));
echo $average;

你也可以尝试这个

$array = array(1, 7, 9, 3, 20, 12, 2, 9);

$average = array_sum($array) / count($array);

echo $average;

您可以查看output

答案 1 :(得分:0)

如果你的得分数组是一维的,你可以使用array_sum。阵列(30&#34;问题1&#34):

$average = array_sum($scores)/(count($scores)/2);

既然不是,你必须在循环中完成

$avg = 0;
foreach ($scores as $score) {
$avg += array_sum($score);
}
$avg /= count($scores);

答案 2 :(得分:0)

我个人喜欢使用array_reduce所以这是一个使用它的例子:

 <p>Average Score</p>
 <?php
    $a = new NewQuizScore;
    $scores = $a->getScores($_SESSION['username']);
    $average = array_reduce($scores, function ($carry, $value) use ($scores) {
        return $carry + $value/count($scores);
   }, 0.0);

    echo ("<tr>");
    echo ("<td>".$average. "</td> ");    
    echo ("</tr>");



    ?>   

这将遍历数组并为数组中的每个值聚合值$value/count($scores)