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
    ]
  ]
}
从上面可以看出,有些项目没有
使用
成本
。它仍然有效

这里还有一个你可以玩的游戏