Tanto o operador "+" quanto array_merge():array array_merge (array array1, array array2 [, array ...]) podem mesclar vários arrays, mas há uma ligeira diferença no processo de uso.
array_merge é descrito no manual de referência da seguinte forma:
array_merge() mescla as células de dois ou mais arrays, com os valores de um array anexados ao array anterior. Retorna a matriz resultante.
Se a matriz de entrada tiver o mesmo nome de chave de string, o valor após o nome da chave substituirá o valor anterior. No entanto, se a matriz contiver chaves numéricas, os valores subsequentes não substituirão os valores originais, mas serão anexados a eles.
A diferença entre os dois é:
1. Quando o nome da chave da matriz é um nome de chave numérica e há KEYs numéricas com o mesmo nome nas duas matrizes a serem mescladas, usar array_merge() não substituirá o valor original, enquanto usar "+" para mesclar as matrizes substituirá o primeiro. O valor é retornado como resultado final, e os valores nas matrizes subsequentes com o mesmo nome de chave são "descartados" (nota: não está sobrescrevendo, mas mantendo o valor que aparece primeiro). Exemplo:
$array1 = array(1=>'0');
$array2 = array(1=> "dados");
$resultado1 = $array2 + $array1;/*O resultado é o valor de $array2*/
print_r($resultado);
$resultado = $array1 + $array2 ;/*O resultado é o valor de $array1*/
print_r($resultado);
$result3 = array_merge($array2,$array1);/*O resultado é o valor de $array2 e $array1, e o nome da chave é reatribuído*/
print_r($resultado3);
$result4 = array_merge($array1,$array2);/*O resultado é o valor de $array1 e $array2, e o nome da chave é reatribuído*/
print_r($result4);
O resultado da saída é:
Matriz ([1] => dados)
Matriz ([1] => 0)
Variedade (
[0] => dados
[1] => 0
)
Variedade
(
[0] => 0
[1] => dados
)
2. Quando o mesmo nome da chave do array é um caractere, o operador "+" é o mesmo que quando o nome da chave é um número, mas array_merge() substituirá o valor anterior do mesmo nome da chave.
exemplo:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "dados");
$resultado1 = $array2 + $array1;/*O resultado é o valor de $array2*/
print_r($resultado);
$resultado = $array1 + $array2 ;/*O resultado é o valor de $array1*/
print_r($resultado);
$resultado3 = array_merge($array2,$array1);/*O resultado é $array1*/
print_r($resultado3);
$resultado4 = array_merge($array1,$array2);/*O resultado é $array2*/
print_r($resultado4);
O resultado de saída é:
Array ([asd] => dados)
Matriz ( [asd] => 0 )
Matriz ( [asd] => 0 )
Matriz ( [asd] => dados )