はじめに
業務でarray_columnを使用し、めちゃくちゃ便利な関数で今後も多く使用するだろうと思いまとめてみました。
自分の振り返りのため、皆さんの参考になれば何よりです。
第一引数に配列、第二引数に取り出す要素のキー名を指定するパターン
下記の例だと、idだけの配列が作成されます。
<?php
$arr = [
['id' => 1, 'name' => 'joy', 'hoby' => 'soccer'],
['id' => 2, 'name' => 'mike', 'hoby' => 'baseball'],
['id' => 3, 'name' => 'taro', 'hoby' => 'tennis'],
['id' => 4, 'name' => 'hana', 'hoby' => 'tabletennis'],
['id' => 5, 'name' => 'kim', 'hoby' => 'basketball']
];
var_export(array_column($arr, 'id'));
// 結果
// array (
// 0 => 1,
// 1 => 2,
// 2 => 3,
// 3 => 4,
// 4 => 5,
// )
下記の例だと、nameだけの配列が作成されます。
$arr = [
['id' => 1, 'name' => 'joy', 'hoby' => 'soccer'],
['id' => 2, 'name' => 'mike', 'hoby' => 'baseball'],
['id' => 3, 'name' => 'taro', 'hoby' => 'tennis'],
['id' => 4, 'name' => 'hana', 'hoby' => 'tabletennis'],
['id' => 5, 'name' => 'kim', 'hoby' => 'basketball']
];
var_export(array_column($arr, 'name'));
// 結果
// array (
// 0 => 'joy',
// 1 => 'mike',
// 2 => 'taro',
// 3 => 'hana',
// 4 => 'kim',
// )
第三引数を指定したパターン
第三引数を指定にすると、その要素を結果の連想配列のキーにできます。
$arr = [
['id' => 1, 'name' => 'joy', 'hoby' => 'soccer'],
['id' => 2, 'name' => 'mike', 'hoby' => 'baseball'],
['id' => 3, 'name' => 'taro', 'hoby' => 'tennis'],
['id' => 4, 'name' => 'hana', 'hoby' => 'tabletennis'],
['id' => 5, 'name' => 'kim', 'hoby' => 'basketball']
];
var_export(array_column($arr, 'name', 'id'));
// 結果
// array (
// 1 => 'joy',
// 2 => 'mike',
// 3 => 'taro',
// 4 => 'hana',
// 5 => 'kim',
// )
第二引数にnullを指定したパターン
第二引数にnullを指定すると、配列をそのまま返します。それだけだと意味がありませんが、第3引数でキー名を指定すれば、その値を各要素のキー名として設定できます。
$arr = [
['id' => 1, 'name' => 'joy', 'hoby' => 'soccer'],
['id' => 2, 'name' => 'mike', 'hoby' => 'baseball'],
['id' => 3, 'name' => 'taro', 'hoby' => 'tennis'],
['id' => 4, 'name' => 'hana', 'hoby' => 'tabletennis'],
['id' => 5, 'name' => 'kim', 'hoby' => 'basketball']
];
var_export(array_column($arr, null, 'id'));
// 結果
// array (
// 1 =>
// array (
// 'id' => 1,
// 'name' => 'joy',
// 'hoby' => 'soccer',
// ),
// 2 =>
// array (
// 'id' => 2,
// 'name' => 'mike',
// 'hoby' => 'baseball',
// ),
// 3 =>
// array (
// 'id' => 3,
// 'name' => 'taro',
// 'hoby' => 'tennis',
// ),
// 4 =>
// array (
// 'id' => 4,
// 'name' => 'hana',
// 'hoby' => 'tabletennis',
// ),
// 5 =>
// array (
// 'id' => 5,
// 'name' => 'kim',
// 'hoby' => 'basketball',
// ),
// )