3種類の配列結合方法について動作をみてみる。
前提条件として以下
$array1 = array("aaa"=>"111", 2, "3"=>"ccc");
$array2 = array(5, "aaa"=>"222", 1=>"bbb");
※他の配列処理については下記
>>PHPでの配列操作メモ
重複しても値を保持 array_merge_recursive()
実行命令
$array3 = array_merge_recursive($array1, $array2);
結果
$array3 = Array
(
[aaa] => Array
(
[0] => 111
[1] => 222
)
[0] => 2
[1] => ccc
[2] => 5
[3] => bbb
)
- 結合配列が同じキーを保持していた場合は、該当キーの値は配列化されるが、値を全て保持している
- 数字キーは番号を振りなおされている
- 文字列キーである『$array1["3"]』が、数字キーと判断され、キーを当てなおされた
キーと値の関係維持 配列+配列
実行命令
$array4 = $array1 + $array2;
結果
$array4 = Array
(
[aaa] => 111
[0] => 2
[3] => ccc
[1] => bbb
)
- キーと値の関係を変更しない
- 結合配列が同じキーを保持していた場合は、先に入っていた値を保持。
値更新・キー振り直し array_merge()
実行命令
$array5 = array_merge($array1, $array2);
結果
$array5 = Array
(
[aaa] => 222
[0] => 2
[1] => ccc
[2] => 5
[3] => bbb
)
- 結合配列が同じキーを保持していた場合は、後から入っていた値を保持。
- 文字列キーである『$array1["3"]』が、数字キーと判断され、キーを当てなおされた

コメント