【发布时间】:2020-10-01 15:28:24
【问题描述】:
我在 Laravel 中有一个代表月度报告的对象。
0 => array:20 [▼
"id" => 43
"operation_id" => 1
"meter_id" => 3
"period" => "monthly"
"total_conso" => "103.42"
"total_autoconso" => "59.47"
"total_grid" => "43.95"
"bill" => "31.95"
"grid_fee" => "26.97"
"solar_turpe_tax_fee" => "4.99"
"savings" => "4.41"
"total_prod" => null
"total_surplus" => null
"autoconso_rate" => "57.5"
"autoprod_rate" => null
"surplus_rate" => null
"date" => "2019-08-24T00:00:00.000000Z"
"created_at" => "2019-08-24T00:00:00.000000Z"
"updated_at" => "2020-10-01T15:03:38.000000Z"
我有一个包含 12 个对象的数组,每个月一个。
我正在计算年度报告值,我必须对每个字段的所有 12 个月求和。
我可以通过以下方式逐个字段地减少:
$totalConso = $reports->reduce(function ($sum, $report) {
return $sum + $report->total_conso;
}, 0);
我正在寻找一种适用于所有领域的方法。可能吗 ?它可以让我不重复 10 次相同的 reduce 函数
谢谢!
【问题讨论】:
-
您可以通过一个简单的 foreach 循环手动执行此操作。 ;)
-
我可以做到,但我讨厌循环 XD。如果没有更好的选择,我会这样做
-
但有时它们实际上是性能提升器(这里是 12 比 1)并且简单。您仍然可以使用
array_map或array_walk,但它们会执行相同的循环。
标签: laravel collections reduce