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

如何按相同code对PHP数组的count值求和?求正确代码

解决多维数组按code合并求和的问题

你的代码没法得到正确结果,主要是两个核心问题:

  • 每次循环都把$total重置为0,完全没起到累加的作用
  • 每次直接覆盖$new_data[$v['code']]的值,导致最后每个code只保留了最后一条的count,而不是总和

这里给你一个逻辑清晰的正确实现:

$data = array( 
    array( 'code' => '02', 'count' => 8 ), 
    array( 'code' => '03', 'count' => 1 ), 
    array( 'code' => '03', 'count' => 1 ), 
    array( 'code' => '03', 'count' => 7 ), 
    array( 'code' => '11', 'count' => 1 ), 
    array( 'code' => '11', 'count' => 5 ), 
    array( 'code' => '17', 'count' => 4 ), 
    array( 'code' => '17', 'count' => 2 ), 
    array( 'code' => '17', 'count' => 8 ) 
);

$new_data = []; 
foreach($data as $item){ 
    // 检查当前code是否已经在结果数组中存在
    if(isset($new_data[$item['code']])){
        // 存在就累加count到ttl
        $new_data[$item['code']]['ttl'] += $item['count'];
    } else {
        // 不存在就初始化这个code的总和为当前count
        $new_data[$item['code']] = ['ttl' => $item['count']];
    }
} 

echo '<pre>'; 
print_r($new_data); 
echo '</pre>';

补充说明:

  • 我把原数组里的code改成了字符串类型(比如'02'而不是02),因为PHP里02会被解析成八进制数(对应十进制的2),如果你的业务需要保留前导零的code,字符串类型能避免键名被意外转换的问题
  • 这段代码会输出每个code对应的count总和,比如code为03的总和是1+1+7=9,code为17的总和是4+2+8=14,完全符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:23:16