如何计算三维数组中每个一级元素的深层值总和?
三维数组一级元素深层值求和解决方案
嘿,我来帮你搞定这个三维数组的求和需求!针对你给出的示例数组,这里有两种实用的实现方案,都能得到你期望的结果:
方案一:嵌套循环+array_sum(结构固定时首选)
这种方法逻辑直观,适合你当前这种层级固定的三维数组:
$targetArray = [ 1 => [ 'A' => ['AA' => 3, 'AB' => 5], 'B' => ['BA' => 2] ], 2 => [ 'C' => ['CA' => 4], 'D' => ['DA' => 1, 'DB' => 2] ], 3 => [ 'E' => ['EA' => 1, 'EB' => 2, 'EC' => 3], 'F' => ['FA' => 0, 'FB' => 7, 'FC' => 7] ] ]; $result = []; // 遍历一级数组的每个元素 foreach ($targetArray as $key => $levelTwoItems) { $total = 0; // 遍历二级元素对应的三级数组 foreach ($levelTwoItems as $levelThreeArray) { // 直接用array_sum计算三级数组的数值和,累加到total $total += array_sum($levelThreeArray); } $result[$key] = $total; } print_r($result);
运行这段代码后,输出结果就是你想要的:
Array( [1] => 10 [2] => 7 [3] => 20 )
方案二:递归求和(结构灵活时首选)
如果你的数组后续可能出现层级变化(比如有的元素深层嵌套更多层),递归方法会更灵活,能自动处理所有深层数值:
// 定义递归求和函数 function calculateDeepSum($array) { $sum = 0; foreach ($array as $value) { // 如果当前元素是数组,继续递归求和;否则直接累加数值 if (is_array($value)) { $sum += calculateDeepSum($value); } else { $sum += $value; } } return $sum; } $targetArray = [ 1 => [ 'A' => ['AA' => 3, 'AB' => 5], 'B' => ['BA' => 2] ], 2 => [ 'C' => ['CA' => 4], 'D' => ['DA' => 1, 'DB' => 2] ], 3 => [ 'E' => ['EA' => 1, 'EB' => 2, 'EC' => 3], 'F' => ['FA' => 0, 'FB' => 7, 'FC' => 7] ] ]; $result = []; foreach ($targetArray as $key => $item) { $result[$key] = calculateDeepSum($item); } print_r($result);
这个方法不管数组嵌套多少层,都能准确计算所有数值的总和,适应性更强。
如果你之前写的代码有问题,也可以贴出来,我们一起看看哪里需要调整~
内容的提问来源于stack exchange,提问作者payket
相关产品推荐
相关产品推荐

