連想配列で特定のカラムの値をkeyにして単一のカラムの値をvalueにしたい場合、別の配列を用意しそこにループ処理で値を詰め直すということをやっていました。
<?php
$foods = array(
array(
'id' => 1,
'name' => 'Sushi',
'country' => 'Japan',
),
array(
'id' => 2,
'name' => 'hamburger',
'country' => 'America',
),
array(
'id' => 3,
'name' => 'Pasta',
'country' => 'Italia',
)
);
?>
この配列のidをkeyにnameをvalueにします。
#ループ処理を用いたやり方
<?php
$foods_menu = array();
foreach($foods as $key => $food){
$id = $food['id'];
$name = $food['name'];
$food_menu[$id] = $name;
}
?>
こんな感じで毎度ループを回してました。
けれどarray_column関数を使えば毎度ループを回すことなく同じことが実現できます。
#array_columnを用いたやり方
<?php
$foods_menu = array_column($foods,'name','id');
?>
第一引数に対象の配列、第二引数にvalueにしたいカラム、第三引数にkeyにしたいカラムを指定することで実現できます。
(第三引数を指定しなければ0からkeyが割り当てられます。)
便利なのでぜひ。