【发布时间】:2021-12-29 13:28:23
【问题描述】:
好吧,所以不能 100% 确定如何正确地问这个问题,但我有一个数组,我试图根据每小时合并和分组,然后是该时间之下每年的数据。
我当前的数组如下所示:
[
{
"name": "7:00 AM",
"data": [
{
"x": "2019",
"y": 1
}
]
},
{
"name": "7:00 AM",
"data": [
{
"x": "2020",
"y": 221
}
]
}
]
所以我希望根据name 值将它们组合成一个数组,然后将所有data 组合起来:
[
{
"name": "7:00 AM",
"data": [
{
"x": "2019",
"y": 1
},
{
"x": "2020",
"y": 221
}
]
}
]
编辑:为了添加我最初获取和格式化这些值的方式,我正在使用 Larvel 并运行以下查询:
$shipments = Orders::whereNotNull('shipped_at')->groupBy(DB::raw('YEAR(created_at)'))->selectRaw('count(*) as count, HOUR(shipped_at) as hour')->selectRaw("DATE_FORMAT(created_at, '%Y') label")->orderBy('label')->orderBy('hour')->groupBy('hour')->get();
这给了我以下数据:
然后我像这样构建原始数组:
$shipping_chart_year = [];
foreach ($shipments as $item) {
$hour = Carbon::parse($item['hour'] . ':00:00')->timezone('America/Chicago')->format('g:i A');
$shipping_chart_year[] = ['name' => $hour, 'data' => [['x' => $item['label'], 'y' => $item['count']]]];
}
【问题讨论】: