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

Laravel:按studentId汇总多维数组集合的marks值

Laravel Collection按studentId汇总marks值

可以通过Laravel Collection的链式方法快速实现需求,代码如下:

$result = $collection
    ->flatten(1)
    ->groupBy('studentId')
    ->map(function ($group) {
        return [
            'studentId' => $group->first()['studentId'],
            'marks' => $group->sum('marks')
        ];
    })
    ->values()
    ->all();

步骤说明:

  • flatten(1):将嵌套的学生记录提取到同一层级,把原集合的二维嵌套结构转为一维的学生记录集合。
  • groupBy('studentId'):按照studentId对所有学生记录分组,相同ID的记录会被归到同一组。
  • map():遍历每个分组,构建目标格式的数组——取分组内的学生ID(同一组ID一致),并对该组的marks字段求和。
  • values():移除分组后生成的以studentId为键的索引,转为连续数字索引的集合。
  • all():将最终的Collection转为普通PHP数组(若需保留Collection实例可省略此方法)。

执行后即可得到预期结果:

[
    ["studentId" => 3, "marks" => 40],
    ["studentId" => 7, "marks" => 50],
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:37:11