array_merge と +演算子の挙動

array_mergeと+演算子の挙動を理解していなかったのでメモ。

array_mergeの特徴

  • キーが数値の場合、0からに振りなおすため、同じキーでも追加する
  • キーが文字列の場合、キーを保持するが同じキーは上書く

演算子の特徴

  •  キーが数値でも文字列でもキーを保持するが、同じキーは上書く

 

以下、サンプル

#1

$a = array(10=>'a', 11=>'b');

$b = array(11=>'c', 13=>'d');

print_r(array_merge($a,$b));

#2

$a = array('z'=>'a', 'y'=>'b');

$b = array('y'=>'c', 'x'=>'d');

print_r(array_merge($a,$b));

#3

$a = array(10=>'a', 11=>'b');

$b = array(11=>'c', 13=>'d');

print_r($a+$b);

#4

$a = array('z'=>'a', 'y'=>'b');

$b = array('y'=>'c', 'x'=>'d');

print_r($a+$b);

 

#1の結果

Array

(

    [0] => a

    [1] => b

    [2] => c

    [3] => d

)

#2の結果

Array

(

    [z] => a

    [y] => c

    [x] => d

)

#3の結果

Array

(

    [10] => a

    [11] => b

    [13] => d

)

#4の結果

Array

(

    [z] => a

    [y] => b

    [x] => d

)