太郎 花子 ジョン ケン 三太夫
連想配列から特定のキーの値を取り出して配列を作成する方法
スポンサーリンク
PHP で連想配列(ハッシュ)から特定のキーの値をすべて取り出して、新しい配列を作成するには array_column を使用します。
連想配列から特定のキーの値を取り出して配列にする
サンプルコードは次の通りです。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 配列を作成 $ary = array( array('id'=>1, 'name'=>'太郎', 'age'=>20, 'rank'=>'A'), array('id'=>5, 'name'=>'花子', 'age'=>52, 'rank'=>'C'), array('id'=>35, 'name'=>'ジョン', 'age'=>6, 'rank'=>'D'), array('id'=>20, 'name'=>'ケン', 'age'=>31, 'rank'=>'S'), array('id'=>11, 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'), ); //name だけを取り出して配列にする。 $ary_names = array_column($ary, 'name'); //中身を確認 foreach($ary_names as $str_name){ print $str_name . PHP_EOL; } |
上記の実行結果は次の通りです。
連想配列の特定のキーの値をキーとし、別のキーの値を値とする配列を作成する
array_column では単純な配列ではなく、元の連想配列の値をキーとする配列(または連想配列)を作成することもできます。サンプルコードは次の通りです。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 配列を作成 $ary = array( array('id'=>1, 'name'=>'太郎', 'age'=>20, 'rank'=>'A'), array('id'=>5, 'name'=>'花子', 'age'=>52, 'rank'=>'C'), array('id'=>35, 'name'=>'ジョン', 'age'=>6, 'rank'=>'D'), array('id'=>20, 'name'=>'ケン', 'age'=>20, 'rank'=>'S'), array('id'=>11, 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'), ); //id をキー、name を値として取り出して配列にする。 $ary_names = array_column($ary, 'name', 'id'); //中身を確認 var_export($ary_names); |
上記の実行結果は次の通りです。
array ( 1 => '太郎', 5 => '花子', 35 => 'ジョン', 20 => 'ケン', 11 => '三太夫', )
キーとする値に重複する値が含まれる場合、重複したキーについては値が上書きされるので注意が必要です。次のサンプルコードでは、 age をキーとして配列を作成しますが、 20 が重複している為、 age が 20 の太郎についてはケンで上書きされます。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 配列を作成 $ary = array( array('id'=>1, 'name'=>'太郎', 'age'=>20, 'rank'=>'A'), array('id'=>5, 'name'=>'花子', 'age'=>52, 'rank'=>'C'), array('id'=>35, 'name'=>'ジョン', 'age'=>6, 'rank'=>'D'), array('id'=>18, 'name'=>'ケン', 'age'=>20, 'rank'=>'S'), array('id'=>11, 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'), ); //id をキー、name を値として取り出して連想配列にする。 $ary_names = array_column($ary, 'name', 'age'); //中身を確認 var_export($ary_names); |
上記の実行結果は次の通りです。
array ( 20 => 'ケン', 52 => '花子', 6 => 'ジョン', 79 => '三太夫', )
array_column を使用すると、 array_multisort で多次元配列をソートする際のキーを配列として簡単に取得することができます。多次元配列のソートについては、二次元配列をソートキーを指定して並び替える方法 を参照してください。
スポンサーリンク
- 配列
- 配列を初期化する方法
- 多次元配列内の全ての文字列を一括で置換する方法
- 配列内の全ての文字列を一括で置換する方法
- 連想配列のキーの大文字・小文字を切り替える方法
- 配列の要素数を確認する方法
- foreach で配列の全ての要素を処理する方法
- 配列を並べ替える方法(ソートする方法)
- 連想配列(ハッシュ)を使用する方法
- 連想配列から特定のキーの値を取り出して配列を作成する方法
- 連想配列(ハッシュ)に指定したキーが存在するかを確認する方法
- 連想配列(ハッシュ)のキーの一覧を取得する方法
- 二次元配列のインデックスを特定のキーの値に置き換える方法
- 二次元配列を複数のキーを指定して並べ替える方法
- 二次元配列をソートキーを指定して並び替える方法
- 配列を CSV に変換し、必要なエスケープを行う