PHP Array Replace: Guía Completa
En PHP, array_replace reemplaza los valores de un array base con los de otros arrays coincidiendo por clave. Aprende sintaxis, parámetros y ejemplos.
En PHP, la función array_replace() reemplaza los valores de un array base con los valores de uno o más arrays de reemplazo, coincidiendo por clave. Para cada clave que exista en un array posterior, ese valor sobrescribe el valor del array base; las claves que aún no existen se añaden al final. Los arrays originales nunca se modifican — array_replace() devuelve un nuevo array.
Esta página cubre la sintaxis y los parámetros de array_replace(), cómo maneja las claves string frente a las numéricas, en qué se diferencia de array_merge() y la advertencia de que no es recursiva (usa array_replace_recursive() cuando necesites combinar arrays anidados).
Cuándo usarla
Recurre a array_replace() cuando quieras sobrescribir valores predeterminados: define un array base con valores por defecto y luego pasa las sobreescrituras del usuario como segundo argumento. Dado que la coincidencia se realiza por clave (no por posición), es la forma más limpia de combinar arrays de configuración donde las claves tienen significado.
Sintaxis
La sintaxis de la función array_replace es la siguiente:
Sintaxis de la función PHP array_replace
array_replace ( array $array1 , array $array2 [, array $... ] ) : arrayarray_replace() acepta al menos un array y admite cualquier número de arrays adicionales. Recorre los arrays de reemplazo de izquierda a derecha: cada valor cuya clave ya existe en $array1 lo sobrescribe, y cada clave nueva se añade al final. Los arrays posteriores tienen prioridad sobre los anteriores. La función devuelve el array resultante y deja todos los argumentos de entrada intactos.
Nota: las claves numéricas se comparan igual que las claves string — por el valor literal de la clave, no por posición. Esta es la diferencia clave respecto a
array_merge(), que renumera las claves enteras.
Parámetros
array1: Es el array inicial cuyos valores serán reemplazados por los valores de los otros arrays.array2: Es el array cuyos valores reemplazarán los valores dearray1....: Son arrays adicionales opcionales, cuyos valores se usarán para seguir reemplazando los valores dearray1.
Ejemplos
Veamos algunos ejemplos para entender cómo funciona array_replace.
Ejemplo 1: Reemplazar valores en un único array
PHP Ejemplo 1: Reemplazar valores en un único array usando array_replace
Salida:
Array
(
[a] => peach
[b] => banana
[c] => cherry
)Aquí la clave a existe en ambos arrays, por lo que $array2 la sobrescribe (apple → peach). La clave b solo existe en $array1, por lo que se mantiene como banana. La clave c solo existe en $array2, por lo que se añade al resultado.
Ejemplo 2: Reemplazar valores en múltiples arrays
PHP Ejemplo 2: Reemplazar valores en múltiples arrays usando array_replace
Salida:
Array
(
[a] => peach
[b] => blueberry
[c] => cherry
[d] => date
)Los arrays de reemplazo se aplican de izquierda a derecha. La clave a se establece en peach por $array2. La clave b comienza como banana pero es sobrescrita por $array3 con blueberry — el último array gana. Las claves c (de $array2) y d (de $array3) son nuevas, por lo que se añaden al final.
Ejemplo 3: No es recursiva — usa array_replace_recursive()
array_replace() reemplaza valores completos, por lo que un array anidado en una clave coincidente se reemplaza completamente en lugar de combinarse. Cuando necesitas una combinación profunda, usa array_replace_recursive().
PHP Ejemplo 3: array_replace vs array_replace_recursive
<?php
$base = ["db" => ["host" => "localhost", "port" => 3306]];
$override = ["db" => ["host" => "example.com"]];
// array_replace overwrites the whole "db" sub-array
print_r(array_replace($base, $override));
// array_replace_recursive merges the nested arrays
print_r(array_replace_recursive($base, $override));
?>Salida:
Array
(
[db] => Array
(
[host] => example.com
)
)
Array
(
[db] => Array
(
[host] => example.com
[port] => 3306
)
)Con array_replace() el port original se pierde porque todo el array db es reemplazado. array_replace_recursive() desciende al array anidado y conserva port.
array_replace() vs array_merge()
Ambas combinan arrays, pero tratan las claves de manera diferente:
- Claves string: se comportan igual — los valores posteriores sobrescriben los anteriores.
- Claves enteras:
array_merge()las renumera secuencialmente, por lo que los valores se añaden en lugar de sobrescribirse.array_replace()conserva las claves enteras y sobrescribe las coincidentes.
<?php
$a = [0 => "zero", 1 => "one"];
$b = [1 => "ONE", 2 => "two"];
print_r(array_merge($a, $b)); // integer keys renumbered
print_r(array_replace($a, $b)); // integer keys preserved
?>Salida:
Array
(
[0] => zero
[1] => one
[2] => ONE
[3] => two
)
Array
(
[0] => zero
[1] => ONE
[2] => two
)Consulta array_merge() para la comparación completa.
Conclusión
En conclusión, la función array_replace en PHP ofrece una forma conveniente de actualizar arrays reemplazando sus valores con los de otros arrays. Con su sintaxis sencilla y sus parámetros flexibles, puede utilizarse en una gran variedad de situaciones, convirtiéndola en una herramienta esencial para los desarrolladores de PHP. Tanto si trabajas en un proyecto sencillo como en uno complejo, la función array_replace puede ayudarte a optimizar tu proceso de desarrollo y hacer tu código más eficiente.