Laravel 数组分组并合并每个组

Иль*_*ько 0 arrays laravel laravel-collection

我有这样一个数组,如何分组date并合并每个组?

$input =  [
    [
        'date' => '2018-09-25',
        'foo' => 'value1',
    ],
    [
        'date' => '2018-09-25',
        'bar' => 'value2'
    ],
    [
        'date' => '2018-09-26',
        'baz' => 'value3'
    ]
];
Run Code Online (Sandbox Code Playgroud)

最终结果是这样的:

[
    [
        'date' => '2018-09-25'
        'foo' => 'value1'
        'bar' => 'value2'
    ],
    [
        'date' => '2018-09-26'
        'baz' => 'value3'
    ]
]
Run Code Online (Sandbox Code Playgroud)

Иль*_*ько 5

您可以使用 laravel集合

首先需要通过groupBy方法进行分组,然后映射每个组并合并每个子数组。

代码:

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

你会得到这个合集:

在此处输入图片说明

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

结束代码:

$result = collect($input)
    ->groupBy('date')
    ->map(function ($item) {
        return array_merge(...$item->toArray());
    })
    ->values()
    ->toArray();
Run Code Online (Sandbox Code Playgroud)