多次元配列から一部の要素だけ抜き出したいという時にどうすればいいのか?
ループで取り出すというのが古い言語的な発想だけど、俺たちのPHPならそういう便利道具が元々あるのでは?と調べてみたらあった。
$hoge = [ ['id' => 1, 'name' => 'stratocaster', 'price' => 70000], ['id' => 2, 'name' => 'les paul', 'price' => 150000], ];
こんなのがあったとして、nameだけ取り出したいとする。
$piyo = array_column($hoge, 'name');
とすれば取り出せる。
さらに第3引数で新しい配列のインデックスを指定できる。
$price_list = array_column($hoge, 'price', 'name');
とすると、nameをキーにした配列になる。
array(2) { ["stratocaster"]=> int(70000) ["les paul"]=> int(150000) }
こんな感じ。地味にあると使える場面がありそうな関数です。