array_column - 多次元配列から特定カラムの配列を作る
array_columnは、多次元配列から、特定のカラムだけで構成された新しい配列を返す関数です。
構文
パラメータ
$input
対象の多次元配列。7以降ではオブジェクトにも対応。
$column_key
キー名を指定。nullを指定した場合は配列全体を返す。第3引数と組み合わせると意味がある。
$index_key
キー名を指定すると、その値が、新しい配列の各要素のキー名となる。
返り値
array
指定したカラムで構成された新しい配列。
サンプルコード
<?php
$array = [
[
"date" => "2015/11/1" ,
"score" => 100 ,
"color" => "red" ,
] ,
[
"date" => "2015/11/2" ,
"score" => 75 ,
"color" => "blue" ,
] ,
[
"date" => "2015/11/3" ,
"score" => 90 ,
"color" => "green" ,
] ,
] ;
$response = array_column( $array, "score" ) ;
デモ
特定のカラムを抜き出す
例えば、下記の多次元配列からscoreだけで構成された配列を作成してみます。第2引数に対象となるカラムのキー名を指定します。
<?php
/*** このコードは編集できます。 ***/
$array = [
[
"date" => "2015/11/1" ,
"score" => 100 ,
"color" => "red" ,
] ,
[
"date" => "2015/11/2" ,
"score" => 75 ,
"color" => "blue" ,
] ,
[
"date" => "2015/11/3" ,
"score" => 90 ,
"color" => "green" ,
] ,
] ;
$response = array_column( $array, "score" ) ;
print_r( $response ) ;
新しい配列のキー名を指定する
先ほどと同じ多次元配列を対象に、今度は、第3引数でキー名となるカラムを指定しました。
<?php
/*** このコードは編集できます。 ***/
$array = [
[
"date" => "2015/11/1" ,
"score" => 100 ,
"color" => "red" ,
] ,
[
"date" => "2015/11/2" ,
"score" => 75 ,
"color" => "blue" ,
] ,
[
"date" => "2015/11/3" ,
"score" => 90 ,
"color" => "green" ,
] ,
] ;
$response = array_column( $array, "score", "date" ) ;
print_r( $response ) ;
多次元配列にキー名を付ける
第2引数にnullを指定すると、配列をそのまま返します。それだけだと意味がありませんが、第3引数でキー名を指定すれば、その値を各要素のキー名として設定できます。
<?php
/*** このコードは編集できます。 ***/
$array = [
[
"date" => "2015/11/1" ,
"score" => 100 ,
"color" => "red" ,
] ,
[
"date" => "2015/11/2" ,
"score" => 75 ,
"color" => "blue" ,
] ,
[
"date" => "2015/11/3" ,
"score" => 90 ,
"color" => "green" ,
] ,
] ;
$response = array_column( $array, null, "date" ) ;
print_r( $response ) ;
参考
- PHP: array_column
- PHPの公式リファレンス。
関連記事
- array_multisort
- 複数、多次元の配列をソートする。
- array_diff_key
- 配列のキーの差異を確認する。
- array_unshift
- 配列の先頭に要素を追加する。
- array_slice
- 配列の一部を切り取る。
- array_intersect
- 複数の配列の中の共通の値を確認する。
- array_fill_keys
- 配列を、既存の値をキーにして別の配列の値で埋める。