関数の概要
array_column は、PHPで多次元配列から特定のカラム(キー)だけを抜き出して新しい配列を作成するための便利な関数です。特に、配列の中に連想配列が入っている場合などに、特定の項目だけを簡単に取り出すことができます。データベース的な配列操作が手軽にできるため、実務でも頻繁に利用されます。
パラメータの説明
- array:対象となる多次元配列。通常、連想配列の配列を指定します。
- column_key:配列から取得したいカラムのキー(文字列または整数)を指定します。
- index_key(省略可能):返される配列のキーとして使いたいカラムのキーを指定します。指定しない場合はデフォルトの連番になります。
戻り値
指定したカラムの値のみを集めた一次元配列が返されます。index_key を指定すると、返される配列のキーがその値になります。
使用例
基本的な使い方
<?php
$data = [
['id' => 1, 'name' => '山田太郎', 'age' => 30],
['id' => 2, 'name' => '鈴木次郎', 'age' => 25],
['id' => 3, 'name' => '佐藤花子', 'age' => 28],
];
$names = array_column($data, 'name');
print_r($names);
?>
この例では、3つの連想配列のうち、'name' カラムだけを抜き出し、$namesに格納しています。結果は名前の配列(['山田太郎', '鈴木次郎', '佐藤花子'])となります。
インデックスを指定して取得する
<?php
$ages = array_column($data, 'age', 'id');
print_r($ages);
?>
column_key に 'age' を指定し、index_key に 'id' を指定しています。結果は、IDをキー、年齢を値とする連想配列になります。
キーが存在しない場合の挙動
<?php
$data = [
['id' => 1, 'name' => '山田太郎'],
['id' => 2], // 'name' キーがない
['id' => 3, 'name' => '佐藤花子'],
];
$names = array_column($data, 'name');
print_r($names);
?>
2番目の配列に 'name' キーが存在しませんが、array_column はその部分は無視し、通常通り動作します。結果は ['山田太郎', '佐藤花子'] となります。
関連する関数
array_map:配列の要素に対して関数を適用して新しい配列を作るarray_filter:配列の要素をフィルタリングするarray_keys:配列のキーだけを取得する
まとめ
array_column は、多次元配列から特定のカラムだけを簡単に取り出せる非常に便利なPHP関数です。インデックスを指定して連想配列として取得できるため、実務のデータ処理において幅広く活用できます。特定の値だけを抽出したい初心者にも扱いやすく、効率的に配列操作を行いたいときはぜひ使ってみてください。
