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.
相关产品推荐
相关产品推荐

