PHP中如何根据数组索引关联,按分组键对另一数组元素求和?
如何根据对应数组的分组对另一个数组元素求和
这其实是个很典型的数组分组求和场景,咱们可以用非常直观的遍历方式来实现,步骤清晰还容易理解:
核心思路
以$array_2中的分组标识(比如'DK'、'GA')为键,同步遍历两个数组的对应位置,把$array_1中相同分组对应的值累加起来,最后就能得到每个分组的总和。
完整实现代码
// 你的原始数组,转成更简洁的短数组语法 $array_1 = [4, 6, 2, 6, 4, 10, 4, 6, 2, 2, 4, 4, 2, 2]; $array_2 = ['DK', 'GA', 'DK', 'GA', 'DK', 'GA', 'WE', 'VE', 'WE', 'VE', 'PLA', 'PRA', 'PLA', 'PRA']; // 初始化空数组,用来存储每个分组的累加和 $group_total = []; // 同时遍历两个数组的索引和对应值 foreach ($array_2 as $key => $group_name) { // 如果当前分组还没被记录,先初始化为0 if (!isset($group_total[$group_name])) { $group_total[$group_name] = 0; } // 累加$array_1中对应位置的值 $group_total[$group_name] += $array_1[$key]; } // 把累加结果赋值到你需要的单独变量中 $dk = $group_total['DK']; $ga = $group_total['GA']; $we = $group_total['WE']; $ve = $group_total['VE']; $pla = $group_total['PLA']; $pra = $group_total['PRA']; // 验证输出结果,和你想要的格式一致 echo "\$dk=4+2+4={$dk};\n"; echo "\$ga=6+6+10={$ga};\n"; echo "\$we=4+2={$we};\n"; echo "\$ve=6+2={$ve};\n"; echo "\$pla=4+2={$pla};\n"; echo "\$pra=4+2={$pra};\n";
代码说明
- 这种方法只需要一次遍历数组,时间复杂度是O(n),效率很高,不管
$array_2里有多少种分组,都能自动处理,不需要手动为每个分组写判断逻辑。 - 如果后续分组有新增或者变化,代码不需要做任何修改,兼容性很强。
内容的提问来源于stack exchange,提问作者Md. Shamvil Hossain
相关产品推荐
相关产品推荐

