SYNCERのロゴ
アイキャッチ画像

array_column - 多次元配列から特定カラムの配列を作る

array_columnは、多次元配列から、特定のカラムだけで構成された新しい配列を返す関数です。

構文

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

パラメータ

$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 ) ;
Array
(
    [0] => 100
    [1] => 75
    [2] => 90
)

新しい配列のキー名を指定する

先ほどと同じ多次元配列を対象に、今度は、第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 ) ;
Array
(
    [2015/11/1] => 100
    [2015/11/2] => 75
    [2015/11/3] => 90
)

多次元配列にキー名を付ける

第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 ) ;
Array
(
    [2015/11/1] => Array
        (
            [date] => 2015/11/1
            [score] => 100
            [color] => red
        )

    [2015/11/2] => Array
        (
            [date] => 2015/11/2
            [score] => 75
            [color] => blue
        )

    [2015/11/3] => Array
        (
            [date] => 2015/11/3
            [score] => 90
            [color] => green
        )

)
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月21日 (水)
コンテンツを公開しました。