You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算三维数组中每个一级元素的深层值总和?

三维数组一级元素深层值求和解决方案

嘿,我来帮你搞定这个三维数组的求和需求!针对你给出的示例数组,这里有两种实用的实现方案,都能得到你期望的结果:

方案一:嵌套循环+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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:57:53