[Laravel] arrayデータのheader行を省略して書く
初期値だったりデータ流し込みだったり、Sitemap的なやつだったり、結構名前付きのArrayを書くことが多いと思うんだけど、毎回name指定するの面倒だよねっていうときに。
(Laravelの `Illuminate\Support\Collection` の恩恵。)
Collections – Laravel – The PHP Framework For Web Artisans https://laravel.com/docs/8.x/collections
$header = collect(['id','name', 'description']);
$values = collect([
[1, 'one', 'hogehoge'],
[2, 'two', 'hogehoge']
]);
$array = $values->map(fn($col) => $header->combine($col))->toArray()
尚、この書き方は php7.4以降で。
php7.4以前の場合はこう
$array = $values->map(
function($value) use ($header) {
return $header->combine($value);
}
)->toArray();
(当然ながら、header行と数ズレてると動かないし、Arrayになるのでオブジェクトではないよっていう)