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
相关产品推荐
相关产品推荐

