如何将PHP多维数组中同item_id的qty汇总至新数组?
解决PHP多维数组按item_id汇总qty的问题
没问题,这是个很常见的数组聚合需求,我来帮你实现按item_id汇总qty的功能。
首先先把你的原始数组整理成规范的PHP代码格式(方便后续测试):
$originalArray = [ 'a' => [ 'item' => ['item_id' => 1], 'qty' => 0 ], 'b' => [ 'item' => ['item_id' => 2], 'qty' => 35 ], 'c' => [ 'item' => ['item_id' => 2], 'qty' => 15 ], // 你提到的其他元素可以继续补充在这里 ];
接下来是核心的汇总代码,逻辑非常清晰:
// 初始化空数组存储汇总结果 $summedArray = []; // 遍历原始数组的每一个元素 foreach ($originalArray as $element) { // 提取当前元素的item_id和qty $itemId = $element['item']['item_id']; $currentQty = $element['qty']; // 判断该item_id是否已经在汇总数组中存在 if (isset($summedArray[$itemId])) { // 已存在则累加qty $summedArray[$itemId]['qty'] += $currentQty; } else { // 不存在则初始化一条新记录 $summedArray[$itemId] = [ 'item' => ['item_id' => $itemId], 'qty' => $currentQty ]; } } // 可选:如果需要将结果转换为数字索引数组(去掉item_id作为键) $summedArray = array_values($summedArray);
代码说明
- 先用
foreach遍历原始数组的每个元素,提取关键的item_id和qty值。 - 借助
item_id作为临时键,判断汇总数组中是否已有该条目:有则累加数量,无则新建条目。 - 最后用
array_values()可以把以item_id为键的数组转换成普通的数字索引数组,方便后续业务使用。
示例输出
针对你给出的原始数组片段,处理后的$summedArray会是这样:
[ ['item' => ['item_id' => 1], 'qty' => 0], ['item' => ['item_id' => 2], 'qty' => 50] ]
内容的提问来源于stack exchange,提问作者Tejas Soni
相关产品推荐
相关产品推荐

