"+" 演算子と array_merge():array array_merge (array array1, array array2 [, array ...]) はどちらも複数の配列をマージできますが、使用プロセスに若干の違いがあります。
array_merge はリファレンス マニュアルで次のように説明されています。
array_merge() は、2 つ以上の配列のセルをマージし、1 つの配列の値を前の配列に追加します。結果の配列を返します。
入力配列に同じ文字列キー名がある場合、キー名の後の値で前の値が上書きされます。ただし、配列に数値キーが含まれている場合、後続の値は元の値を上書きせず、追加されます。
2 つの違いは次のとおりです。
1. 配列キー名が数値キー名で、マージする 2 つの配列に同じ名前の数値キーがある場合、array_merge() を使用しても元の値は上書きされませんが、「+」を使用して配列をマージします。最初の値が最終結果として返され、同じキー名を持つ後続の配列の値は「破棄」されます (注: 上書きではなく、最初に表示された値が保持されます)。例:
$array1 = array(1=>'0');
$array2 = array(1=> "データ");
$result1 = $array2 + $array1;/*結果は $array2 の値です*/
print_r($result);
$result = $array1 + $array2 ;/*結果は $array1 の値です*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結果は $array2 と $array1 の値であり、キー名は再割り当てされます*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結果は $array1 と $array2 の値であり、キー名は再割り当てされます*/
print_r($result4);
出力結果は次のとおりです。
配列 ( [1] => データ )
配列 ( [1] => 0 )
配列 (
[0] => データ
[1] => 0
)
配列
(
[0] => 0
[1] => データ
)
2. 同じ配列キー名が文字の場合、「+」演算子はキー名が数字の場合と同じですが、array_merge() は同じキー名の以前の値を上書きします。
例:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "データ");
$result1 = $array2 + $array1;/*結果は $array2 の値です*/
print_r($result);
$result = $array1 + $array2 ;/*結果は $array1 の値です*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結果は $array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結果は $array2 です*/
print_r($result4);
出力結果は次のようになります:
Array ([asd] => data)
配列 ( [asd] => 0 )
配列 ( [asd] => 0 )
配列 ( [asd] => データ )