Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php代码中计算平均值时出错,输出错误_Php_Average - Fatal编程技术网

php代码中计算平均值时出错,输出错误

php代码中计算平均值时出错,输出错误,php,average,Php,Average,我用php编写了以下代码,用于计算平均分数。它可以工作,但会产生错误的输出逻辑错误 代码 期望的输出是97.5,因为分数是100100和90,但它显示为:100.25 更新分数结构很重要 生成分数的代码的前面部分如下所示,以阐明分数的结构-请注意,我不希望答案只是生成一个数组并对其进行平均,我可以这样做,而是希望它在这种情况下得到修复 <?php $a = new NewQuizScore; $scores = $a-&g

我用php编写了以下代码,用于计算平均分数。它可以工作,但会产生错误的输出逻辑错误

代码

期望的输出是97.5,因为分数是100100和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>");
                }



                ?>
为什么要使用数组_sum

array_sum是计算数组值之和的函数。$score的值只是一个数字,对吗

然后更改下面的行

$avg += array_sum($score);

它会起作用的

请尝试下面的代码。在你的情况下会有用的

为什么要使用数组_sum

array_sum是计算数组值之和的函数。$score的值只是一个数字,对吗

然后更改下面的行

$avg += array_sum($score);

它会起作用的

请尝试下面的代码。在你的情况下会有用的



尝试$avg+=$score;内部for loopchange$avg+=array_sum$score;至$avg+=$score;我试过了——正如下面提到的,它只会导致页面未加载。您可能希望查看数组_列$scores,1作为使用数组_sum和count的解决方案的一部分。我认为这将使代码看起来更干净;内部for loopchange$avg+=array_sum$score;至$avg+=$score;我试过了——正如下面提到的,它只会导致页面未加载。您可能希望查看数组_列$scores,1作为使用数组_sum和count的解决方案的一部分。我认为这会使代码看起来更干净。我试过了,结果页面根本没有加载。有什么建议吗?您在$scores数组中的数据结构是什么?请参阅我问题中的更新信息-非常感谢您运行print_r$scores并提供以了解$scores数组的结构?它无法从您的问题中识别。请在每一行之前呼叫它。使用类似打印的分数;死亡因此,它将在那里终止进程,您只能看到数组值。我尝试了,结果页面根本没有加载。有什么建议吗?您在$scores数组中的数据结构是什么?请参阅我问题中的更新信息-非常感谢您运行print_r$scores并提供以了解$scores数组的结构?它无法从您的问题中识别。请在每一行之前呼叫它。使用类似打印的分数;死亡因此,它将在那里终止进程,您只能看到数组值。我需要使用现有代码是有原因的,因为分数不在数组中,而是在其他位置生成的。嗨,阿曼-我完全按照您的建议尝试了,它显示平均值:0!你能把你的打印分数贴出来吗?我不知道该怎么做。你能解释一下吗?我将该行放在for循环之前,但没有输出?$a=NewQuizScore$分数=$a->getScores$\会话['username'];回响打印r$分数;死亡我需要使用现有代码是有原因的,因为分数不在数组中,而是在其他地方生成的。嗨,阿曼-我完全按照你的建议尝试了,它显示平均值:0!你能把你的打印分数贴出来吗?我不知道该怎么做。你能解释一下吗?我将该行放在for循环之前,但没有输出?$a=NewQuizScore$分数=$a->getScores$\会话['username'];回响打印r$分数;死亡
$avg += $score;
$avg = 0;
foreach($scores as $score){
    $avg += $score[1];
}
$avg /= count($scores);

echo $avg;
<?php
$num = [100,100,100,90]; // marks as array 
$avg = array_sum($num) / count($num); // calculate avrage 

echo $avg; // output : 97.5

?>
    /* Your output array $scores */
    $scores = [
                [
                "1-Python Basics",
                "100",
                "01_PythonB"
                ],
                [
                "1-Python Output",
                "100",
                "02_Print_O"
                ],
                [
                "1-Python Basics",
                "90",
                "02_Print_O"
                ],
                [
                "1-Python Basics",
                "100",
                "03_Variabl"
                ],
            ];

    foreach($scores as $val) {

        $scoreArr[] = $val[1]; 
    }

    $avg = array_sum($scoreArr) / count($scoreArr); // calculate avrage 

    echo $avg;
    die;