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

如何为Laravel集合的每行添加元素存储该行所有值的总和?

Laravel集合添加每行总和字段的实现

原始数据结构

假设你的Laravel集合中每个元素是类似这样的月份数据:

"Aug-2022" => [
    "annualbuffalomilksalerecordforcustomer" => "8.00",
    "annuala2milksalerecordforcustomer" => "5.50",
    "annualjerseymilksalerecordforcustomer" => "2.50",
    "annualbuffalomilksalerecord" => "168.00",
    "annuala2milksalerecord" => "0.00",
    "annualjerseymilksalerecord" => "390.00"
]

需求

计算每个月份数组中所有数值的总和,新增sumofmilksale字段并赋值为求和结果(如示例中的574.00)。

解决方案

使用Laravel集合的map方法遍历处理每个元素,结合sum方法计算总和,最后格式化结果并添加新字段:

$processedCollection = $yourOriginalCollection->map(function ($monthData) {
    // 将字符串数值转为浮点型后求和
    $total = collect($monthData)->sum(function ($value) {
        return (float)$value;
    });
    // 保留两位小数,保持和原有数据格式一致
    $monthData['sumofmilksale'] = number_format($total, 2);
    return $monthData;
});

或者用更简洁的箭头函数写法:

$processedCollection = $yourOriginalCollection->map(fn($monthData) => array_merge($monthData, [
    'sumofmilksale' => sprintf("%.2f", collect($monthData)->sum(fn($val) => (float)$val))
]));

处理后结果

每个月份数组会新增目标字段,结构如下:

"Aug-2022" => [
    "annualbuffalomilksalerecordforcustomer" => "8.00",
    "annuala2milksalerecordforcustomer" => "5.50",
    "annualjerseymilksalerecordforcustomer" => "2.50",
    "annualbuffalomilksalerecord" => "168.00",
    "annuala2milksalerecord" => "0.00",
    "annualjerseymilksalerecord" => "390.00",
    "sumofmilksale" => "574.00"
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:06:26