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

PHP按mpn和product_id分组数组并统计数量总和

PHP按mpn和product_id分组并统计quantity总和

实现思路

  • 以product_id和mpn的组合作为唯一分组标识,确保同组项被归类到一起
  • 遍历原数组时,对同组项的quantity进行累加
  • 最后将分组后的关联数组转换为索引数组,匹配目标格式

代码实现

// 你的原始数组
$originalData = [
    [
        'product' => 'Product HTC',
        'mpn' => '',
        'quantity' => 3,
        'product_id' => 28
    ],
    [
        'product' => 'Product HTC',
        'mpn' => 'ggg',
        'quantity' => 5,
        'product_id' => 28
    ],
    [
        'product' => 'Product HTC',
        'mpn' => 'ggg',
        'quantity' => 1,
        'product_id' => 28
    ],
    [
        'product' => 'Product HTC',
        'mpn' => 'ggg',
        'quantity' => 1,
        'product_id' => 28
    ],
    [
        'product' => 'Product HTC',
        'mpn' => 'fff',
        'quantity' => 1,
        'product_id' => 28
    ]
];

$groupedResult = [];

foreach ($originalData as $item) {
    // 生成唯一分组键,兼容空mpn的情况
    $groupKey = $item['product_id'] . '|' . $item['mpn'];
    
    if (isset($groupedResult[$groupKey])) {
        // 累加同组数量
        $groupedResult[$groupKey]['quantity'] += $item['quantity'];
    } else {
        // 新增分组
        $groupedResult[$groupKey] = $item;
    }
}

// 转换为索引数组
$finalResult = array_values($groupedResult);

// 输出结果
print_r($finalResult);

运行结果

Array
(
    [0] => Array
        (
            [product] => Product HTC
            [mpn] => 
            [quantity] => 3
            [product_id] => 28
        )

    [1] => Array
        (
            [product] => Product HTC
            [mpn] => ggg
            [quantity] => 7
            [product_id] => 28
        )

    [2] => Array
        (
            [product] => Product HTC
            [mpn] => fff
            [quantity] => 1
            [product_id] => 28
        )
)

内容的提问来源于stack exchange,提问作者K. B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:05:20