Saltar al contenido

Fusión de Arrays en PHP: Una Guía en Profundidad

La función array_merge() de PHP es una herramienta poderosa para combinar arrays en un solo array. Esta función toma dos o más arrays como argumentos y los fusiona en un único array, donde los valores de los arrays posteriores sobrescriben los valores de los arrays anteriores cuando las claves coinciden. Nota: En PHP 8, pasar argumentos que no sean arrays a array_merge() generará un TypeError. En esta guía, profundizaremos en la función array_merge(), explorando sus diversos usos y aplicaciones.

Uso básico de array_merge()

El uso básico de la función array_merge() es sencillo. Simplemente pasa dos o más arrays como argumentos, y la función devolverá un nuevo array que sea el resultado de fusionarlos. Aquí tienes un ejemplo:

PHP array_merge function example

php
<?php

$array1 = ["color" => "red", 2, 4];
$array2 = ["a", "b", "color" => "green", "shape" => "rectangle", 4];
$result = array_merge($array1, $array2);
print_r($result);

?>

Salida:

console
Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => rectangle
    [4] => 4
)

Como puedes ver, los valores de $array2 sobrescriben los valores de $array1 cuando tienen la misma clave.

Combinación de arrays multidimensionales

La función array_merge() también se puede usar para combinar arrays multidimensionales. Para fusionar arrays multidimensionales, simplemente pasa cada array como argumento a la función. Aquí tienes un ejemplo:

PHP To merge multidimensional arrays by using array_merge_recursive

php
<?php

$array1 = ["color" => ["favorite" => "red"], 2, 4];
$array2 = ["a", "b", "color" => ["favorite" => "green"], "shape" => "rectangle", 4];
$result = array_merge($array1, $array2);
print_r($result);

?>

Salida:

console
Array
(
    [color] => Array
        (
            [favorite] => green
        )
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => rectangle
    [4] => 4
)

Ten en cuenta que array_merge() puede combinar arrays multidimensionales, pero sobrescribirá los arrays anidados que compartan la misma clave. Para agregar arrays anidados en lugar de sobrescribirlos, utiliza array_merge_recursive().

Combinación de un array indexado con un array asociativo

Al combinar un array indexado con un array asociativo, los valores de ambos arrays se combinan. Aquí tienes un ejemplo:

PHP Example of merging an indexed array with an associative array by array_merge function

php
<?php

$array1 = ["a", "b", "c"];
$array2 = ["a" => "apple", "b" => "banana", "c" => "cherry"];
$result = array_merge($array1, $array2);
print_r($result);

?>

Salida:

console
Array
(
    [0] => a
    [1] => b
    [2] => c
    [a] => apple
    [b] => banana
    [c] => cherry
)

Como puedes ver, los valores de ambos arrays se combinan. Dado que las claves son de tipos diferentes (numéricas frente a cadenas), no se produce ninguna sobrescritura. Este es un detalle importante a tener en cuenta al combinar arrays con distintos tipos de claves.

Combinación de un array asociativo con un array indexado

El resultado de combinar un array asociativo con un array indexado es similar. Los valores se combinan y las claves se conservan según su tipo. Aquí tienes un ejemplo:

PHP merging an associative array with an indexed array by using array_merge function

php
<?php

$array1 = ["a" => "apple", "b" => "banana", "c" => "cherry"];
$array2 = ["a", "b", "c"];
$result = array_merge($array1, $array2);
print_r($result);

?>

Salida:

console
Array
(
    [a] => apple
    [b] => banana
    [c] => cherry
    [0] => a
    [1] => b
    [2] => c
)

Como se muestra, los valores se combinan sin conflictos. Las claves de cadena de $array1 se conservan, mientras que las claves numéricas de $array2 se reindexan comenzando desde 0.

Consideraciones de rendimiento

La función array_merge() tiene una complejidad temporal lineal, lo que significa que el tiempo que tarda en combinar arrays aumenta linealmente con el tamaño de los mismos. Por esta razón, es importante mantener al mínimo el número de arrays que se combinan y evitar usar la función en arrays extremadamente grandes.

Conclusión

La función array_merge() es una herramienta versátil para combinar arrays en PHP. Ya sea que estés combinando arrays planos, multidimensionales, indexados o asociativos, esta función te cubre las espaldas. Debido a su complejidad temporal lineal, es importante mantener al mínimo el tamaño de los arrays que se combinan, pero con el enfoque adecuado, esta función puede ser una herramienta invaluable en tu kit de herramientas de PHP.

Práctica

¿Qué es cierto sobre la función array_merge en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.