En este post te voy a explicar la diferencia entre dos funciones de PHP que sirven para combinar arreglos: array_merge
y array_merge_recursive
.
En resumen, la diferencia es que array_merge
combina arreglos y si encuentra claves repetidas toma el valor del último arreglo, y array_merge_recursive
crea un array nuevo cuando encuentra claves repetidas.
Estoy seguro de que lo vas a entender mejor con un ejemplo que demuestra la diferencia entre array_merge_recursive
y array_merge
.
Diferencia entre array_merge y array_merge_recursive en PHP
Como lo dije, ambas funciones combinan arreglos.
Si array_merge
encuentra claves o índices repetidos, el valor en el arreglo nuevo será el último que encuentre.
Veamos el siguiente ejemplo:
<?php
$detallesUsuario = array(
"nombre" => "Luis Cabrera Benito",
"sitio_web" => "parzibyte.me",
);
$masDetalles = array(
"edad" => 22,
"sitio_web" => "https://parzibyte.me/blog",
);
$con_array_merge = array_merge($detallesUsuario, $masDetalles);
print_r($con_array_merge);
/*
Array
(
[nombre] => Luis Cabrera Benito
[sitio_web] => https://parzibyte.me/blog
[edad] => 22
)
*/
En ambos arreglos tenemos un valor en ["sitio_web"]
pero como array_merge
toma el último valor encontrado, toma el del segundo arreglo; es decir, descarta los anteriores.
Se encuentra una gran diferencia al usar array_merge_recursive
, veamos el ejemplo:
<?php
$detallesUsuario = array(
"nombre" => "Luis Cabrera Benito",
"sitio_web" => "parzibyte.me",
);
$masDetalles = array(
"edad" => 22,
"sitio_web" => "https://parzibyte.me/blog"
);
$con_array_merge_recursive = array_merge_recursive($detallesUsuario, $masDetalles);
print_r($con_array_merge_recursive);
/*
Array
(
[nombre] => Luis Cabrera Benito
[sitio_web] => Array
(
[0] => parzibyte.me
[1] => https://parzibyte.me/blog
)
[edad] => 22
)
*/
En el nuevo arreglo, dentro de la clave ["sitio_web"]
tenemos otro arreglo que tiene lo valores repetidos.
Esa es la diferencia entre array_merge
y array_merge_recursive
en PHP.