PHPの配列はとても便利です。
様々なデータを一括で持つことができます。
データベースから取得してきたデータも配列で返す事がほとんどです。
でも、一括でデータを持つことが出来るからこそデータの扱いや取り出しに悩む事があります。
PHPには様々な関数があり、配列のデータに関する関数もあります。
今回はそんな配列の関数の一つ、array_columnを以下の内容で紹介します。
【基礎】array_columnとは
【基礎】array_columnで好きな項目を取り出す
【応用】array_columnで取り出した項目を並び替え
array_columnついてわかりやすく解説していますので、ぜひ参考にしてください。。
array_columnとは
array_columnは、配列から好きなデータを取り出す事が出来る関数です。
array_columnは以下のように記述します。
array_column(配列, 項目);
配列・・・対象の配列を指定
項目・・・取り出したい項目を指定
例えば、以下の様な配列があるとします。
$book_data = array( array( 'book_id' => 5, 'book_name' => '本1' ), array( 'book_id' => 10, 'book_name' => '本2', ), array( 'book_id' => 3, 'book_name' => '本3', ) );
この配列のbook_nameというデータを取り出して配列化したい場合、以下のように取り出す事は出来ます。
<?php $book_data = array( array( 'book_id' => 5, 'book_name' => '本1' ), array( 'book_id' => 10, 'book_name' => '本2', ), array( 'book_id' => 3, 'book_name' => '本3', ) ); foreach($book_data as $val){ $book_data_disp[] = $val['book_name']; } print_r($book_data_disp); ?>
結果 Array ( [0] => 本1 [1] => 本2 [2] => 本3 )
「book_name」の項目を配列化できました。
ただ、foreachで一つずつ取り出して配列に入れる作業が必要です。
もっと簡単に取り出したい。
そこで、array_columnの出番です。
【基本】array_columnで好きな項目を取り出す
では、実際にarray_columnを使用してデータを取り出してみましょう。
以下サンプルコードです。
<?php // 配列にデータを入れる $book_data = array( array( 'book_id' => 5, 'book_name' => '本1' ), array( 'book_id' => 10, 'book_name' => '本2', ), array( 'book_id' => 3, 'book_name' => '本3', ) ); // 第一引数にデータを入れた配列を指定 // 第二引数に取り出したい項目名を指定 $array_column_data = array_column($book_data, 'book_name'); print_r($array_column_data); ?>
結果 Array ( [0] => 本1 [1] => 本2 [2] => 本3 )
foreachを使わなくても、目的の項目を配列化する事ができました。
【応用】array_columnで取り出した項目をキーに指定
最後に、目的の項目を取り出して別の項目をキーに指定するサンプルコードです。
<?php $book_data = array( array( 'book_id' => 5, 'book_name' => '本1' ), array( 'book_id' => 10, 'book_name' => '本2', ), array( 'book_id' => 3, 'book_name' => '本3', ) ); // 第三引数にキーにする項目を指定する $array_column_data = array_column($book_data, 'book_name', 'book_id'); print_r($array_column_data); ?>
結果 Array ( [5] => 本1 [10] => 本2 [3] => 本3 )
配列のキーが指定した項目の値になりました。
まとめ
本日は、PHPの配列データを取り出せるarray_columnについて説明しました。
色々な関数を知っているとコードをシンプルに書けますね。
それでは、また。