Laravel数组分组并合并每个组

时间:2018-09-24 18:46:45

标签: arrays laravel laravel-collection

我有这样一个数组,如何按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'
    ]
]

1 个答案:

答案 0 :(得分:2)

您可以使用laravel collection

首先,您需要按groupBy方法分组,然后按map每个分组并合并每个子数组。

代码:

$result = collect($input)
    ->groupBy('date')
    ->map(function ($item) {
        return array_merge(...$item->toArray());
    });

您将获得此收藏集:

enter image description here

最后删除键(日期),可以使用values,只需将集合转换为数组(toArray)即可。

结束代码:

$result = collect($input)
    ->groupBy('date')
    ->map(function ($item) {
        return array_merge(...$item->toArray());
    })
    ->values()
    ->toArray();
相关问题