You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP数组提取成绩求平均值问题:累计求和导致结果错误

问题修正:计算个人成绩平均值

输入的成绩数据如下:

Jack - 80,55,77
Jim - 50,60,70

需求是提取每个人的成绩并计算平均值,但当前代码存在问题:计算Jack的平均值结果正确,但计算Jim的平均值时,会累加Jack和Jim的所有成绩,而非仅Jim的成绩。预期输出为:

Jack's average grade is 70
Jim's average grade is 60

问题原因

原代码中$sum变量在循环外部初始化,属于全局作用域,每次处理新用户时没有重置该变量,导致后续用户的成绩总和会累加之前所有用户的成绩。

修正后的代码

<?php
$elements = [];
while (FALSE !== ($line = fgets(STDIN))) {
  $elements[] = trim($line);
}
foreach ($elements as $element) {
    $sum = 0; // 每次处理新用户时重置总和为0
    $input = explode( ' - ', $element );
    $grades = explode(",", $input[1]);

    for ($i=0; $i < count($grades); $i++) { 
        $sum += $grades[$i];
    }
    print "<p>". $input[0]."'s average grade is ".floor($sum/count($grades))."</p>";
}
?>

修正说明

将$sum=0移至foreach循环内部,这样每次处理一个用户的成绩时,都会重新初始化总和为0,确保只计算当前用户的成绩总和,得到正确的平均值。

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:17:19