array_merge is buggy when merging associative arrays, and should only be used for non associative arrays :

php > var_dump(array_merge(array('1'=>'a','2'=>'b'), array('aa'=>'bb')));
array(3) {
  [0] =>
  string(1) "a"
  [1] =>
  string(1) "b"
  'aa' =>
  string(2) "bb"
}
php > var_dump(array('1'=>'a','2'=>'b') + array('aa'=>'bb'));
array(3) {
  [1] =>
  string(1) "a"
  [2] =>
  string(1) "b"
  'aa' =>
  string(2) "bb"
}