Laravel 集合中的分组依据和总和
我不知道是否有一个简单的方法来完成我想做的事情,所以我想我不妨问问。我确实在寻找这个问题的答案,但我找不到类似的答案 我有一个名为Laravel 集合中的分组依据和总和,laravel,laravel-collection,Laravel,Laravel Collection,我不知道是否有一个简单的方法来完成我想做的事情,所以我想我不妨问问。我确实在寻找这个问题的答案,但我找不到类似的答案 我有一个名为$data的变量,它保存一个类似以下内容的集合: [ "date" => "2017-10-07 10:00:00" "usage" => 0.423 "costs" => 1.212 ], [ "date" => "2017-10-07 11:00:00" "usage" => 0.786
$data
的变量,它保存一个类似以下内容的集合:
[
"date" => "2017-10-07 10:00:00"
"usage" => 0.423
"costs" => 1.212
],
[
"date" => "2017-10-07 11:00:00"
"usage" => 0.786
"costs" => 1.564
],
[
"date" => "2017-10-07 12:00:00"
"usage" => 0.542
"costs" => 1.545
]
(数据可以是每小时一次,最多持续2个月,为了可读性,我选择在本例中仅包含3小时)
正如您所看到的,它都是每小时(这也是我需要的代码中不同部分的数据)我希望每天单独收集。是否有一种简单的方法可以按日期(“Ymd”)进行分组并计算
使用量和成本?我还应该提到,并非集合中的所有项都具有所有索引。有些没有使用
,有些没有成本
。但是,它们都有日期。您可以通过以下方式实现这一点:
$collection=collect([
[
“日期”=>“2017-10-07 10:00:00”,
“用法”=>0.423,
“成本”=>1.212
],
[
“日期”=>“2017-10-07 11:00:00”,
“用法”=>0.786,
“成本”=>1.564
],
[
“日期”=>“2017-10-07 12:00:00”,
“用法”=>0.542,
“成本”=>1.545
],
[
“日期”=>“2017-10-08 10:00:00”,
“成本”=>1.1
],
[
“日期”=>“2017-10-08 11:00:00”,
“用法”=>0.786,
],
[
“日期”=>“2017-10-08 12:00:00”,
“成本”=>1.567
]
]);
返回$collection->groupBy(函数($row){
返回Carbon\Carbon::parse($row['date'])->格式('Y-m-d');
})->映射(函数($value,$key){
返回[
“用法”=>$value->sum('usage'),
“成本”=>$value->sum('costs')
];
});
上述数据的输出如下所示:
Collection {#267 ▼
#items: array:2 [▼
"2017-10-07" => array:2 [▶]
"2017-10-08" => array:2 [▼
"usage" => 0.786
"costs" => 2.667
]
]
}
从上面可以看出,有些项目没有使用
或成本
。它仍然有效
这里还有一个你可以玩的游戏 您可以通过以下方式实现这一点:
$collection=collect([
[
“日期”=>“2017-10-07 10:00:00”,
“用法”=>0.423,
“成本”=>1.212
],
[
“日期”=>“2017-10-07 11:00:00”,
“用法”=>0.786,
“成本”=>1.564
],
[
“日期”=>“2017-10-07 12:00:00”,
“用法”=>0.542,
“成本”=>1.545
],
[
“日期”=>“2017-10-08 10:00:00”,
“成本”=>1.1
],
[
“日期”=>“2017-10-08 11:00:00”,
“用法”=>0.786,
],
[
“日期”=>“2017-10-08 12:00:00”,
“成本”=>1.567
]
]);
返回$collection->groupBy(函数($row){
返回Carbon\Carbon::parse($row['date'])->格式('Y-m-d');
})->映射(函数($value,$key){
返回[
“用法”=>$value->sum('usage'),
“成本”=>$value->sum('costs')
];
});
上述数据的输出如下所示:
Collection {#267 ▼
#items: array:2 [▼
"2017-10-07" => array:2 [▶]
"2017-10-08" => array:2 [▼
"usage" => 0.786
"costs" => 2.667
]
]
}
从上面可以看出,有些项目没有使用
或成本
。它仍然有效
这里还有一个你可以玩的游戏