【php】arrayの演算子

普段、arrayをくっつけるときは、array_mergeを使っています。
ZendのRouterやRoute_Moduleあたりのソースを見ているときに、
array 同士を “+” している記述があったので調べてみました。
その結果、array $a , array $bがあり、連想配列である場合、
array_mergeと”+”には差があることがわかりました。

同一のキーが存在した場合、”+”演算子は、既存のリストの値を優先し、
array_mergeは新しいリストの値を優先します。
つまり、$a + $b と array_merge($b, $a)の返り値は同じになります。

例をあげると、こういうことです。

$a = array('aa' => '11', 'bb' => '22');
$b = array('aa' => '33', 'cc' => '44');

$a + $b = array('aa' => '11', 'bb' => '22', 'cc' => '44')
array_merge($a, $b) = array('aa' => '33', 'bb' => '22', 'cc' => '44');