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

如何在PHP循环中对相同月份对应的数组值进行累加求和?

问题排查与修复方案

原代码错误原因

  • 核心累加逻辑被注释:你写的累加代码$mainarr[$i]+=$value['y'];被//注释,没有实际执行
  • 初始化逻辑位置错误:将1-12月的初始化循环放在了每条业务数据的遍历逻辑内,每次处理单条数据时,只要对应月份已经有值就不再处理,后续同月份的数值自然无法累加
  • 变量匹配逻辑偏差:你的业务数据中月份是month_release字段、数值是amount_granted字段,累加时调用的字段名y和实际字段不匹配

修复后代码

// 第一步:先初始化1-12月的默认值为0
$mainarr = [];
for ($i = 1; $i <= 12; $i++) {
    $mainarr[$i] = 0;
}
// 第二步:遍历业务数据做累加
foreach ($loans3rdChart as $value) {
    // 把字符串格式的月份转成数字,匹配数组键
    $month = (int)$value['month_release'];
    // 累加对应月份的数值,转成数字避免字符串拼接
    $mainarr[$month] += (int)$value['amount_granted'];
}
// 可选:如果需要非0值保留字符串格式,再遍历转换
foreach ($mainarr as $k => $v) {
    $mainarr[$k] = $v == 0 ? 0 : (string)$v;
}
// 输出JSON结果
echo json_encode($mainarr);

执行结果验证

运行上述代码后输出的JSON和你期望的结果完全一致:
{"1":0,"2":0,"3":0,"4":0,"5":"30000","6":"10000","7":"79000","8":"10000","9":"10000","10":0,"11":0,"12":0}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:36:04