如何对动态生成数组的对应键值求和并计算平均值?
实现对应键值的求和与平均值计算
我来给你捋个清晰的实现思路,直接上手就能用的那种:
第一步:初始化总和存储容器
首先得提前准备两个变量:一个数组用来存每个键对应的累加总和,一个计数器记录迭代的总次数(写成通用型的,哪怕以后迭代次数不是3次也能直接用)。代码如下:
$sumArray = []; $iterationCount = 0;
第二步:遍历数据,累加对应键值
接着遍历你的$data['data'](也就是每一轮迭代生成的数组组),内层循环把每个键的值累加到sumArray对应的位置上:
foreach ($data['data'] as $item) { $iterationCount++; foreach ($item as $key => $value) { // 第一次遇到该键时,先初始化为0再累加 if (!isset($sumArray[$key])) { $sumArray[$key] = 0; } $sumArray[$key] += $value; } }
第三步:计算每个键的平均值
最后遍历总和数组,用每个键的累加值除以迭代次数,就能得到对应键的平均值了:
$averageArray = []; foreach ($sumArray as $key => $total) { $averageArray[$key] = $total / $iterationCount; // 要是需要控制小数位数,比如保留1位,可以用这个: // $averageArray[$key] = number_format($total / $iterationCount, 1); }
举个实际例子验证
假设你的$data['data']是这样的三组数据:
$data['data'] = [ ['math' => 87, 'english' => 76.5], ['math' => 95.2, 'english' => 82.3], ['math' => 100, 'english' => 90] ];
跑上面的代码后,$averageArray就会得到:
[ 'math' => (87+95.2+100)/3 ≈ 94.07, 'english' => (76.5+82.3+90)/3 ≈ 82.93 ]
这个逻辑和你现有的两层foreach结构完全匹配,不管迭代次数是3次还是更多次都能通用,直接套进你的代码里就行~
内容的提问来源于stack exchange,提问作者Heisenberg
相关产品推荐
相关产品推荐

