Как можно сделать следующее с коллекциями ларавеллы
Мы получили этот массив: давайте предположим, что мы заранее не знаем мультиключи
$input =[
['name' =>'John McClane','age'=>'40' ],
['name' =>'John McClane','age'=>'50' ],
['name' =>'Hans Gruber','age'=>'40' ],
['name' =>'Hans Gruber','age'=>'50' ],
['name' =>'Holly McClane','age'=>'20' ],
['name' =>'Holly McClane','age'=>'49' ],
];
$output =[
'name' => [
'John McClane',
'Hans Gruber',
'Holly McClane'
],
'age' =>[
'40',
'50',
'20',
'49'
]
];
Обновление : @Felippe Duarte добавил простую версию PHP о том, как это сделать.
$output =[];
foreach($input as $arr){
$keys = array_keys($arr);
foreach ($keys as $key) {
$output[$key] = array_unique(array_column($input, $key));
}
}
Просто заменить array_unique(array_column($input, $key));
на $input->pluck($key)->toArray();
не очень интересно.
Что мне интересно, есть ли аккуратный путь к этому полностью с помощью коллекции laravel в одну строку?
Группировка по многомерным ключам с уникальными значениями.
Cheers!