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

如何按key对PHP多维数组的值求和?代码报错求助

解决嵌套数组按key求和的Notice错误及正确实现

你遇到的Notice错误主要有两个原因:一是第一次访问$sumArray[$id]时这个索引还没定义,二是你直接把数组和数字做累加操作,不符合PHP的类型规则。咱们一步步来修正:

错误原因拆解

  • 未初始化数组索引:当第一次循环到某个$id(比如1)时,$sumArray[$id]还不存在,直接用+=会触发"Undefined index"的Notice。
  • 错误的累加对象:$value是一个子数组(比如array(2)),你直接把它和$sumArray[$id]相加,会导致类型不匹配的问题,甚至后续计算出错。

修正后的代码

$items = array( 
    'red' => array( 
        '1' => array(2), 
        '2' => array(6, 1) 
    ), 
    'green' => array( 
        '2' => array(1, 9), 
        '1' => array(1, 2) 
    ) 
);

$sumArray = array(); 
foreach ($items as $k => $subArray) { 
    foreach ($subArray as $id => $value) { 
        // 先初始化索引,避免Notice
        if (!isset($sumArray[$id])) {
            $sumArray[$id] = 0;
        }
        // 先计算子数组的元素和,再累加到对应key的总和里
        $sumArray[$id] += array_sum($value);
    } 
} 
print_r($sumArray);

代码说明

  • 初始化索引:用isset()检查$sumArray[$id]是否存在,不存在就设为0,彻底解决Notice问题。
  • 子数组求和:使用array_sum($value)把每个$value数组里的元素先加起来,得到一个数字后再累加到$sumArray[$id]中,完全匹配你的需求。

运行这段代码后,就能得到你期望的输出:

Array
(
    [1] => 5
    [2] => 17
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:10:55