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

Laravel二维集合按两列分组并对第三列求和的实现方法

Laravel集合按SKU和Batch分组并求和Qty_Total

原始集合

$stocks = collect(
    [
        ['sku' => '123', 'batch' => '123', 'qty_total' => 1],
        ['sku' => '1233', 'batch' => '123', 'qty_total' => 2],
        ['sku' => '123', 'batch' => '123', 'qty_total' => 3],
        ['sku' => '5', 'batch' => '123', 'qty_total' => 4],
    ]
);

目标输出

[
    ['sku' => '123', 'batch' => '123', 'qty_total' => 4],
    ['sku' => '1233', 'batch' => '123', 'qty_total' => 2],
    ['sku' => '5', 'batch' => '123', 'qty_total' => 4],
]

解决方案代码

你已经完成了分组步骤,后续只需对每个分组的qty_total求和并重组结构即可:

$result = $stocks
    ->groupBy(['sku', 'batch'], true)
    ->map(function ($group) {
        $firstItem = $group->first();
        return [
            'sku' => $firstItem['sku'],
            'batch' => $firstItem['batch'],
            'qty_total' => $group->sum('qty_total')
        ];
    })
    ->values();

代码说明

  1. groupBy(['sku', 'batch'], true):按sku和batch的组合键分组,第二个参数true保留原始键的类型。
  2. map():遍历每个分组重组数据:
    • 取分组内第一个元素的sku和batch(分组依据就是这两个字段,所以分组内所有元素的这两个值完全一致)。
    • 用sum('qty_total')计算当前分组的总数量。
  3. values():移除分组产生的层级键,将集合转为连续索引的数组结构,匹配目标输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:28:13