SYNCER

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

初期値: null

キー名を指定すると、その値が、新しい配列の各要素のキー名となる。

返り値

array

指定したカラムで構成された新しい配列。

サンプルコード

特定のカラムを抜き出す

例えば、下記の多次元配列からscoreだけで構成された配列を作成してみます。第2引数に対象となるカラムのキー名を指定します。

php

<?php
	// 配列
	$queue = [
		[
			"date" => "2015/11/1" ,
			"score" => 100 ,
			"color" => "red" ,
		] ,
		[
			"date" => "2015/11/2" ,
			"score" => 75 ,
			"color" => "blue" ,
		] ,
		[
			"date" => "2015/11/3" ,
			"score" => 90 ,
			"color" => "green" ,
		] ,
	] ;

	// 実行
	$result = array_column( $queue, "score" ) ;

	// 返り値
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.21

Array
(
    [0] => 100
    [1] => 75
    [2] => 90
)

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

先ほどと同じ多次元配列を対象に、今度は、第3引数でキー名となるカラムを指定しました。

php

<?php
	// 配列
	$queue = [
		[
			"date" => "2015/11/1" ,
			"score" => 100 ,
			"color" => "red" ,
		] ,
		[
			"date" => "2015/11/2" ,
			"score" => 75 ,
			"color" => "blue" ,
		] ,
		[
			"date" => "2015/11/3" ,
			"score" => 90 ,
			"color" => "green" ,
		] ,
	] ;

	// 実行
	$result = array_column( $queue, "score", "date" ) ;

	// 返り値
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.21

Array
(
    [2015/11/1] => 100
    [2015/11/2] => 75
    [2015/11/3] => 90
)

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

第2引数にnullを指定すると、配列をそのまま返します。それだけだと意味がありませんが、第3引数でキー名を指定すれば、その値を各要素のキー名として設定できます。

php

<?php
	// 配列
	$queue = [
		[
			"date" => "2015/11/1" ,
			"score" => 100 ,
			"color" => "red" ,
		] ,
		[
			"date" => "2015/11/2" ,
			"score" => 75 ,
			"color" => "blue" ,
		] ,
		[
			"date" => "2015/11/3" ,
			"score" => 90 ,
			"color" => "green" ,
		] ,
	] ;

	// 実行
	$result = array_column( $queue, NULL, "date" ) ;

	// 返り値
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.21

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
        )

)

サンドボックス

ソースコードを編集してarray_column()の挙動を確認して下さい。

Array
(
    [0] => 100
    [1] => 75
    [2] => 90
)

参考リンク

  • PHP - 公式マニュアル。