標準関数 array_column の 魅力と活用法 1
今日のテーマ PHPの関数の中で一番好きな関数 array_column の紹介 array_column とは PHP5.5から使える関数で、入力配列から単一のカラムの値を返す 1つの 関数でいろんな配列のパターンに対応しているのが好きなポイント LaravelのCollectionメソッドでよく使う操作を この関数でも出来るので、とても便利 2
自己紹介 発表者 ma@me 所属 不具合分析 最近の業務 不具合対応 品質改善業務をメインに色々 やってます 登壇予定 PHPerKaigi 2026 3
目次 1. 今日のテーマ 2. 1. Key名を指定して抽出する 3. 2. 抽出した値を特定のKeyで保持する 4. 3. 配列全体を特定のKeyで保持する 5. 4. 指定したKeyが存在しない場合 6. 5. オブジェクトの配列からプロパティを抽出する 7. array_columnのまとめ 4
1. Key 名を指定して抽出する $records = [ ['id' => 2135,'first_name' => 'John','last_name' => 'Doe'], ['id' => 3245,'first_name' => 'Sally','last_name' => 'Smith'], ['id' => 5342,'first_name' => 'Jane','last_name' => 'Jones'], ]; array_column($records, 'id'); 結果 [2135, 3245, 5342] 公式ドキュメントで動作を見る 5
1. Key 名を指定して抽出する Laravel Collection PHP メソッドとの比較 array_column($records, 'id'); Laravel Collection $names = $records-> pluck ('id'); 6
抽出した値を特定のKeyで保持する 2. $records = [ ['id' => 2135,'first_name' => 'John','last_name' => 'Doe'], ['id' => 3245,'first_name' => 'Sally','last_name' => 'Smith'], ['id' => 5342,'first_name' => 'Jane','last_name' => 'Jones'], ]; array_column($records, 'last_name', 'id'); 結果 [ 2135 => 'Doe', 3245 => 'Smith', 5342 => 'Jones', ] 公式ドキュメントで動作を見る 7
2. 抽出した値を特定のKeyで保持する Laravel Collection PHP メソッドとの比較 array_column($records, 'last_name', 'id'); Laravel Collection $names = $records-> pluck('last_name', 'id'); 8
配列全体を特定のKeyで保持する 3. $records = [ ['id' => 2135,'first_name' => 'John','last_name' => 'Doe'], ['id' => 3245,'first_name' => 'Sally','last_name' => 'Smith'], ['id' => 5342,'first_name' => 'Jane','last_name' => 'Jones'], ]; array_column($records, null, 'id'); 結果 [ 2135 => ['id' => 2135, 'first_name' => 'John', 'last_name' => ' 3245 => ['id' => 3245, 'first_name' => 'Sally', 'last_name' => 5342 => ['id' => 5342, 'first_name' => 'Jane', 'last_name' => ' ] 公式ドキュメントで動作を見る 9
3. 配列全体を特定のKeyで保持する Laravel Collection PHP メソッドとの比較 array_column($records, null, 'id'); Laravel Collection $names = $records-> keyBy('id'); 10
指定したKeyが存在しない場合 4. 配列の中に指定したキーが存在しない要素がある場合、その要素は無視 (スキップ)されます。 $records = [ ['id' => 2135, 'first_name' => 'John'], ['id' => 3245], // 'first_name' がない ['id' => 5342, 'first_name' => 'Jane'], ]; array_column($records, 'first_name'); 結果 [ 0 => 'John', 1 => 'Jane', // インデックスが詰められて抽出される ] 11
4. 指定したKeyが存在しない場合 Laravel Collection メソッドとの比較 PHP (array_column) 存在しない要素はスキップされます。 ['John', 'Jane'] Laravel Collection (pluck) null として保持されます。 ['John', null, 'Jane'] 12
オブジェクトの配列からプロパティ を抽出する 5. オブジェクトのpublicプロパティ配列からもを取得可能 class User { public function __construct(public array $username) {} } $users = [ ]; new User('user1'), new User('user2'), new User('user3') print_r(array_column($users, 'username')); 結果 ['user1', 'user2', 'user3'] 13
オブジェクトの配列からプロパティ を抽出する 5. Laravel Collection メソッドとの比較 PHP パブリックプロパティや、マジックメソッド __get を実装している オブジェクトからも抽出可能です。 array_column($users, 'username'); Laravel Collection 同様にオブジェクトのプロパティから抽出できま す。 collect($users)->pluck('username'); 14
array_column のまとめ 汎用性が高い 単純な抽出、キーの振り直し、オブジェクトへの対応 軽量・高速 フレームワークに依存せず、標準環境で動作する 部分的にCollectionの代用可能 配列操作をするために、Collectionにラップして〜という手段を取らずと も、代用できるケースは結構あります array_column の活用を検討してみてください! 15