トップページ
Laravel学習サイトLaravelやるばい

目次

PHPのarray_columnが何かと簡単なサンプル コードで解説

みなさんこんにちは、あべ いさぢです。

PHPのarray_columnが何かと簡単なサンプルコードで解説します。


array_columnとは

対象となる配列の中に連想配列が入っている時に使います。

要素となる連想配列の中の特定のkeyに該当するvalueだけを抜き出して連想配列の要素に指定して連想配列を返す関数です。

基本形は下記になります。

array_column(array $array, string|int $column_key, string|int|null $index_key = null): array

第一引数が対象となる配列で第二引数が特定のkeyで第三引数が抜き出した配列に対するインデックス番号です。

第三引数がある場合はkeyに該当するvalueがインデックス番号になり第三引数がない場合はインデックス番号は0から振られます。

サンプルコードを見た方がイメージができるので見ていきます。


サンプルコード

下記のコードで考えます。

$users = [
    ['id' => 1, 'name' => '田中'],
    ['id' => 2, 'name' => '佐藤'],
    ['id' => 3, 'name' => '鈴木'],
];

$names = array_column($users, 'name');

print_r($names);

結果は下記になります。

Array
(
    [0] => 田中
    [1] => 佐藤
    [2] => 鈴木
)

今回は第二引数が「name」です、keyがnameに該当するvalueが返す連想配列の要素になります。

第三引数の指定がないのでインデックス番号は0からになります。

下記のコードのように第三引数を指定したとします。

$users = [
    ['id' => 3, 'name' => '田中'],
    ['id' => 4, 'name' => '佐藤'],
    ['id' => 5, 'name' => '鈴木'],
];

$names = array_column($users, 'name', 'id');

print_r($names);

結果は下記になります。

Array
(
    [3] => 田中
    [4] => 佐藤
    [5] => 鈴木
)

keyがidに該当するvalueがインデックス番号になるので上記の結果を得ます。


注意点

第3引数を指定した時にインデックス番号が重複したら上書きされます。

下記のコードで考えます。

$users = [
    ['id' => 3, 'name' => '田中'],
    ['id' => 3, 'name' => '佐藤'],
    ['id' => 5, 'name' => '鈴木'],
];

$names = array_column($users, 'name', 'id');

print_r($names);

「'id' => 3」が2回記述されていますが最後の要素を使います。

結果は下記になります、連想配列の要素は2つです。

Array
(
    [3] => 佐藤
    [5] => 鈴木
)
戻る