配列を2つ結合するのに一番よく使用される関数は、おそらく array_merge ではないでしょうか。ただし、array_merge 関数を使用すると数字キーの番号がふり直されてしまうので、キーが数字形式の連想配列を扱う場合に少々やっかいです。
array_mergeのマニュアルに記載されているように、「配列を完全に維持し、単に追加だけしたい場合には、+ 演算子を使用してください」とあるように+ 演算子を使用すると、数字でも文字列でも配列のキーを完全に保持することができます。
では、PHPマニュアルの配列演算子についてのページを見てみましょう。「$a + $b」というようなプラス演算子について、以下のような説明が見つかるでしょう。
----- + 演算子は左側の配列に右側の配列の内容を追加します。 重複しているキーは上書き「されません」。 -----
とあります。重複しているキーは上書きされないので、普通の四則演算のように+ 演算子の左と右の変数を交換すると答えが変わってしまいます。
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
// $c = $a + $b と等価
$c = $a;
foreach ($b as $key => $val) {
if (!isset($a[$key])) {
$c[$key] = $val;
}
}
print_r($c);
// $d = $b + $a と等価
$d = $a;
foreach ($b as $key => $val) {
$d[$key] = $val;
}
print_r($d);
?>
上からも $a+$b≠$b+$a ということがわかるでしょう。2つの処理のうち、$d =$b + $a; と記述すればよい部分を、foreachを使って処理している方もいるのではないでしょうか。
連想配列の結合には + 演算子を、数字キーの配列の結合には array_merge 関数、というのが一般的な使用方法ではないでしょうか。もし配列の + 演算子を知らなかった方はこれを機会に、ぜひ使用して下さい。