Tanto el operador "+" como array_merge():array array_merge (array array1, array array2 [, array...]) pueden fusionar múltiples arreglos, pero hay una ligera diferencia en el proceso de uso.
array_merge se describe en el manual de referencia de la siguiente manera:
array_merge() fusiona las celdas de dos o más matrices, con los valores de una matriz agregados a la matriz anterior. Devuelve la matriz resultante.
Si la matriz de entrada tiene el mismo nombre de clave de cadena, el valor después del nombre de la clave sobrescribirá el valor anterior. Sin embargo, si la matriz contiene claves numéricas, los valores posteriores no sobrescribirán los valores originales, sino que se agregarán a ellos.
La diferencia entre los dos es:
1. Cuando el nombre de la clave de la matriz es un nombre de clave numérica y hay LLAVES numéricas con el mismo nombre en las dos matrices que se van a fusionar, el uso de array_merge() no sobrescribirá el valor original, mientras que se usa "+" para fusionar las matrices. reemplazará el primero. El valor se devuelve como resultado final, y los valores de las matrices posteriores con el mismo nombre de clave se "descartan" (nota: no se sobrescribe, sino que se conserva el valor que aparece primero). Ejemplo:
$matriz1 = matriz(1=>'0');
$matriz2 = matriz(1=> "datos");
$resultado1 = $array2 + $array1;/*El resultado es el valor de $array2*/
print_r($resultado);
$resultado = $array1 + $array2 ;/*El resultado es el valor de $array1*/
print_r($resultado);
$result3 = array_merge($array2,$array1);/*El resultado es el valor de $array2 y $array1, y el nombre de la clave se reasigna*/
print_r($resultado3);
$result4 = array_merge($array1,$array2);/*El resultado es el valor de $array1 y $array2, y el nombre de la clave se reasigna*/
print_r($resultado4);
El resultado de salida es:
Matriz ([1] => datos)
Matriz ([1] => 0)
matriz (
[0] => datos
[1] => 0
)
Formación
(
[0] => 0
[1] => datos
)
2. Cuando el mismo nombre de clave de matriz es un carácter, el operador "+" es el mismo que cuando el nombre de clave es un número, pero array_merge() sobrescribirá el valor anterior del mismo nombre de clave.
ejemplo:
$matriz1 = matriz('asd'=>'0');
$matriz2 = matriz('asd' => "datos");
$resultado1 = $array2 + $array1;/*El resultado es el valor de $array2*/
print_r($resultado);
$resultado = $array1 + $array2 ;/*El resultado es el valor de $array1*/
print_r($resultado);
$resultado3 = array_merge($array2,$array1);/*El resultado es $array1*/
print_r($resultado3);
$resultado4 = array_merge($array1,$array2);/*El resultado es $array2*/
print_r($resultado4);
El resultado de salida es:
Matriz ([asd] => datos)
Matriz ([asd] => 0)
Matriz ([asd] => 0)
Matriz ([asd] => datos)