PHP开发新手求助:如何计算多维数组的每日平均值
解决多维数组每日平均值计算问题
嘿,别担心,这个任务拆解开来其实很容易上手!我来一步步帮你完成计算每日气象指标平均值的需求。
需求分析
我们需要遍历给定的多维数组,对每一天的每个气象指标(比如湿度、温度、降水量)的数值集合计算平均值,最终生成一个以日期为键、包含各指标平均值的结果数组。
完整解决方案代码
<?php $measurements = array( '1_DAY_2017' => array( 'humidity' => array(15,15,15,15,7,16,11,2), 'temperature' => array(32,28,27,26,24,24,28,31) ), '2_DAY_2017' => array( 'temperature' => array(26,24,24,28,28,26), 'precipitation' => array(12,15,10,12,7,4,2) ), '3_DAY_2017' => array( 'humidity' => array(16,12,15,15,7,16,11,2), 'temperature' => array(32,28,27,26,24,24,28) ), '4_DAY_2017' => array( 'humidity' => array(11,11,15,15,7,16,10,2), 'temperature' => array(26,24,24,28,31,31,28,26) ), '5_DAY_2017' => array( 'humidity' => array(12,15,10,12,7,16,2), 'temperature' => array(25,24,24,28,31,30,27,26) ), '6_DAY_2017' => array( 'humidity' => array(15,11,13,12,7,16,11,2), 'temperature' => array(25,24,23,28,31,31,27,26) ), '7_DAY_2017' => array( 'humidity' => array(14,15,15,15,7,16,11,2), 'temperature' => array(26,24,24,28,32,31,28,27) ), ); // 初始化结果数组 $dailyAverages = []; // 遍历每一天的数据 foreach ($measurements as $dayKey => $dayData) { // 初始化当天的平均值数组 $dailyAverages[$dayKey] = []; // 遍历当天的每个指标 foreach ($dayData as $metric => $values) { // 计算平均值:总和除以数量,保留1位小数(可根据需求调整) $average = round(array_sum($values) / count($values), 1); // 将平均值存入结果数组 $dailyAverages[$dayKey][$metric] = $average; } } // 打印结果查看 print_r($dailyAverages); ?>
代码解释
- 初始化结果数组:
$dailyAverages = []创建一个空数组,用来存储最终的每日平均值数据。 - 外层循环遍历日期:
foreach ($measurements as $dayKey => $dayData)逐个处理每一天的数据集,$dayKey是日期标识(比如1_DAY_2017),$dayData是当天的所有气象指标数据。 - 内层循环遍历指标:
foreach ($dayData as $metric => $values)处理当天的每个指标,$metric是指标名称(比如temperature),$values是该指标的所有数值集合。 - 计算平均值:
array_sum($values)计算数值集合的总和,count($values)获取数值的数量,两者相除得到平均值;用round(..., 1)可以将结果保留1位小数,让数据更整洁(你也可以根据需求修改保留的小数位数,或者去掉round保留原始精度)。 - 存储结果:将计算好的平均值存入
$dailyAverages对应的位置,最终形成你期望的数组格式。
运行这段代码后,你会得到和需求一致的结果,比如1_DAY_2017的temperature平均值为27.5,完全符合你给出的示例格式。
内容的提问来源于stack exchange,提问作者Prasanth G.S
相关产品推荐
相关产品推荐

