array ( 8 => array ( 'id' => 8, 'name' => '太郎', 'age' => 20, 'rank' => 'A', ), 5 => array ( 'id' => 5, 'name' => '花子', 'age' => 52, 'rank' => 'C', ), 35 => array ( 'id' => 35, 'name' => 'ジョン', 'age' => 6, 'rank' => 'D', ), 18 => array ( 'id' => 18, 'name' => 'ケン', 'age' => 20, 'rank' => 'S', ), 11 => array ( 'id' => 11, 'name' => '三太夫', 'age' => 79, 'rank' => 'A', ), )
二次元配列のインデックスを特定のキーの値に置き換える方法
スポンサーリンク
データベースや XML から抽出したデータを二次元配列で受け取った際など、次のようなデータ構造のインデックスを特定のキーの値に置き換える場合、 array_column を使用します。
対象のデータ構造の例 | |
1 2 3 4 5 6 7 | array( 0 => ['id'=>8, 'name'=>'太郎', 'age'=>20, 'rank'=>'A'], 1 => ['id'=>5, 'name'=>'花子', 'age'=>52, 'rank'=>'C'], 2 => ['id'=>35, 'name'=>'ジョン', 'age'=>6, 'rank'=>'D'], 3 => ['id'=>18, 'name'=>'ケン', 'age'=>20, 'rank'=>'S'], 4 => ['id'=>11, 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'], ); |
上記のデータはインデックス 0 ~ 4 の配列の中に、 id, name, age, rank をキーとする連想配列が格納されています。このインデックス 0 ~ 4 の部分を連想配列内の id の部分に置き換えるサンプルコードは次の通りです。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 配列を作成 $ary1 = array( 0 => ['id'=>8, 'name'=>'太郎', 'age'=>20, 'rank'=>'A'], 1 => ['id'=>5, 'name'=>'花子', 'age'=>52, 'rank'=>'C'], 2 => ['id'=>35, 'name'=>'ジョン', 'age'=>6, 'rank'=>'D'], 3 => ['id'=>18, 'name'=>'ケン', 'age'=>20, 'rank'=>'S'], 4 => ['id'=>11, 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'], ); //id をキーとした二次元配列を作成する。 $ary2 = array_column($ary1, NULL, 'id'); //中身を確認 var_export($ary2); |
上記の実行結果は次の通りです。
キーとする値に重複する値が含まれる場合、重複したキーについては上書きされるので注意が必要です。次のサンプルコードでは、 age をキーとしますが、 20 が重複している為、 age が 20 の太郎についてはケンでの内容で上書きされます。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // 配列を作成 $ary1 = array( 0 => ['id'=>8, 'name'=>'太郎', 'age'=>20, 'rank'=>'A'], 1 => ['id'=>5, 'name'=>'花子', 'age'=>52, 'rank'=>'C'], 2 => ['id'=>35, 'name'=>'ジョン', 'age'=>6, 'rank'=>'D'], 3 => ['id'=>18, 'name'=>'ケン', 'age'=>20, 'rank'=>'S'], 4 => ['id'=>11, 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'], ); //id をキーとした二次元配列を作成する。 $ary2 = array_column($ary1, NULL, 'age'); //中身を確認 var_export($ary2); |
上記の実行結果は次の通りです。
array ( 20 => array ( 'id' => 18, 'name' => 'ケン', 'age' => 20, 'rank' => 'S', ), 52 => array ( 'id' => 5, 'name' => '花子', 'age' => 52, 'rank' => 'C', ), 6 => array ( 'id' => 35, 'name' => 'ジョン', 'age' => 6, 'rank' => 'D', ), 79 => array ( 'id' => 11, 'name' => '三太夫', 'age' => 79, 'rank' => 'A', ), )
スポンサーリンク
- 配列
- 配列を初期化する方法
- 多次元配列内の全ての文字列を一括で置換する方法
- 配列内の全ての文字列を一括で置換する方法
- 連想配列のキーの大文字・小文字を切り替える方法
- 配列の要素数を確認する方法
- foreach で配列の全ての要素を処理する方法
- 配列を並べ替える方法(ソートする方法)
- 連想配列(ハッシュ)を使用する方法
- 連想配列から特定のキーの値を取り出して配列を作成する方法
- 連想配列(ハッシュ)に指定したキーが存在するかを確認する方法
- 連想配列(ハッシュ)のキーの一覧を取得する方法
- 二次元配列のインデックスを特定のキーの値に置き換える方法
- 二次元配列を複数のキーを指定して並べ替える方法
- 二次元配列をソートキーを指定して並び替える方法
- 配列を CSV に変換し、必要なエスケープを行う