array_column関数でできること
PHPのarray_columnは多次元配列の中から指定したカラムの値のみを抽出することができる関数です。
抽出した値は新しい配列に格納されて返ってきます。
例えば、下図のようなデータベースから取得したデータは多次元配列になっていることが多いと思いますが、
PHP
$arr1 = [ ['id' => 1, 'name' => '東京都', 'code' =>'tokyo', 'furigana' => 'トウキョウト'], ['id' => 2, 'name' => '埼玉県', 'code' =>'saitama', 'furigana' => 'サイタマケン'], ['id' => 3, 'name' => '千葉県', 'code' =>'chiba', 'furigana' => 'チバケン'], ['id' => 4, 'name' => '神奈川県', 'code' =>'kanagawa', 'furigana' => 'カナガワケン'], ];
array_columnを使えばテーブルのデータの中から、フリガナのカラムの値のみを取り出すといったことができます。
ループを使って配列から値を取り出すという手段もありますが、どうしてもコードが煩雑になりがちです。一方array_columnを利用すれば簡潔なコードで処理を実装することができます。
array_column関数の使い方
array_column関数は次のように記述して使用します。
array_columnは第一引数に対象の配列を、第二引数に抽出したいカラムを指定します。
先ほどの配列($arr1)を例に、array_columnを使って配列の中から「furigana」カラムの値のみを取り出してみます。
PHP
$furigana = array_column($arr1,'furigana'); print_r($furigana); //Array ( [0] => トウキョウト [1] => サイタマケン [2] => チバケン [3] => カナガワケン )
特定のカラムをキーにした連想配列を作る
array_columnは第三引数を指定すると、そのカラムをキー、第二引数を値にした連想配列に変換することができます。
先ほどの配列($arr1)に対して第三引数に「code」を指定してarray_columnを実行してみます。
PHP
$furigana = array_column($arr1,'furigana','code'); print_r($furigana); //Array ( [tokyo] => トウキョウト [saitama] => サイタマケン [chiba] => チバケン [kanagawa] => カナガワケン )
codeをキーにすることができたので、例えば「$furigana['tokyo']」という書き方で指定したキー「tokyo」に対する値(フリガナ「トウキョウト」)を取り出すことができます。
配列内を検索するときに活用する
「指定したカラムに特定の値が含まれるもの」という絞り込みをしたいケースは、array_columnとarray_searchと組み合わせることで実装できます。
詳しくはarray_searchのページをご覧ください。
まとめ
以上が、array_columnを使ってPHPで多次元配列から特定のカラムの値を取得する方法です。
特にデータベースを扱ったプログラムで重宝する関数と言えるのではないでしょうか。