前回の記事にも書きましたが、PHPで複数の配列を結合する際に+演算子を使用すると、
左側の配列の値が優先的に適用され、右側の配列に共通のキーが存在した場合でも
その値は上書きされないようになっています。
そのため、キーが0から始まる複数の配列を結合したい場合に、
単純に+演算子で結合しても先頭(左側)の配列しか得ることができません。
このような場合には、array_merge関数を使用します。
[php]
$a = array(1, 2);
$b = array(3, 4);
$c1 = $a + $b; // array(1, 2)
$c2 = $b + $a; // array(3, 4)
$c3 = array_merge($a, $b); // array(1, 2, 3, 4)
[/php]
array_merge関数を使用すると、入力配列内の数値キーは
0から始まる連続する数値に置き換えられます。
文字列キーは、数値に置き換えられずそのまま保持されますが、
配列の値に関しては、+演算子での結合とは異なり、
後方(右側)の値が優先的に適用されます。
[php]
$a = array(‘A’ => 1, ‘B’ => 2);
$b = array(‘A’ => 3, ‘B’ => 4);
$c1 = $a + $b; // array(‘A’ => 1, ‘B’ => 2)
$c2 = $b + $a; // array(‘A’ => 3, ‘B’ => 4)
$c3 = array_merge($a, $b); // array(‘A’ => 3, ‘B’ => 4)
[/php]