我有这样一个数组,如何按date
分组并合并每个组?
$input = [
[
'date' => '2018-09-25',
'foo' => 'value1',
],
[
'date' => '2018-09-25',
'bar' => 'value2'
],
[
'date' => '2018-09-26',
'baz' => 'value3'
]
];
最终结果是这样的:
[
[
'date' => '2018-09-25'
'foo' => 'value1'
'bar' => 'value2'
],
[
'date' => '2018-09-26'
'baz' => 'value3'
]
]
答案 0 :(得分:2)
您可以使用laravel collection。
首先,您需要按groupBy方法分组,然后按map每个分组并合并每个子数组。
代码:
$result = collect($input)
->groupBy('date')
->map(function ($item) {
return array_merge(...$item->toArray());
});
您将获得此收藏集:
最后删除键(日期),可以使用values,只需将集合转换为数组(toArray)即可。
结束代码:
$result = collect($input)
->groupBy('date')
->map(function ($item) {
return array_merge(...$item->toArray());
})
->values()
->toArray();