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

PHP二维数组按二级键分组,对相同键对应的值求和

解决方案:合并二维关联数组并按键求和

没问题,我来帮你搞定这个PHP数组求和的需求!我们可以通过遍历累加的方式,轻松把所有子数组中相同键的值合并求和,最终得到一维关联数组。

基础循环实现(易懂直观)

这种写法逻辑清晰,适合新手理解,能完美处理所有存在的键,不管它是不是在每个子数组里都出现:

$array = [ 
    ['x1' => 1, 'x2' => 3, 'y5' => 9], 
    ['x1' => 3, 'x4' => 1, 'y5' => 1], 
    ['x1' => 1, 'x8' => 5, 'a5' => 2], 
    ['x1' => 2, 'x10' => 3, 'b5' => 5], 
];

$newarray = [];

// 遍历原始数组中的每个子数组
foreach ($array as $subArray) {
    // 逐个处理子数组里的键值对
    foreach ($subArray as $key => $value) {
        // 键已存在就累加,不存在就直接赋值
        if (isset($newarray[$key])) {
            $newarray[$key] += $value;
        } else {
            $newarray[$key] = $value;
        }
    }
}

print_r($newarray);

运行后会输出你想要的结果:

Array
(
    [x1] => 7
    [x2] => 3
    [y5] => 10
    [x4] => 1
    [x8] => 5
    [a5] => 2
    [x10] => 3
    [b5] => 5
)

简洁函数式写法(PHP7+适用)

如果习惯函数式编程,用array_reduce配合空合并运算符??可以让代码更紧凑,效果完全一致:

$newarray = array_reduce($array, function($carry, $item) {
    foreach ($item as $key => $value) {
        // 用??简化“键不存在则取0”的判断
        $carry[$key] = ($carry[$key] ?? 0) + $value;
    }
    return $carry;
}, []);

内容的提问来源于stack exchange,提问作者Cananau Cristian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:17:48