> Faqs > ¿Cómo puedo unir dos arrays en PHP? colocando los registros de uno al final del otro

¿Cómo puedo unir dos arrays en PHP? colocando los registros de uno al final del otro

Tengo dos arrays en PHP.

Quiero unirlos para tener un único array con la suma de los campos de ambos arrays.

He probado con array_merge(), pero no hace exactamente lo que querría:

$citas_diarias_unidas = array_merge ( $citas_calendario1, $citas_calendario2 );

El tema es que los arrays que uso en este caso son arrays asociativos. Al combinarlos, si en ambos arrays tengo los mismos índices de cadena, se sobreescriben los valores, en vez de unirse... ¿Cómo puedo hacer para conseguir que se unan y no se sobreescriban?

Respuestas

Si se tratan de arrays asociativos realmente no puedes hacer nada, porque no puedes tener dos casillas con la misma llave.

imagina este array:

$array1 = [
    'padre' => 'Fernando',
    'madre' => 'Fermina'
];

Ahora quieres unir este otro array:

$array2 = [
    'padre' => 'Matias',
    'Hija' => 'Manuela'
];

Si te fijas, la única solución es que el valor de array2 para 'padre' sustituya al valor de $array1 para 'padre', dado que no puedes tener en un mismo array asociativo dos valores con la misma llave 'padre'.

Ese mismo es el comportamiento normal de la función array_merge().

Si fuesen arrays de índices numéricos sí que podrías unirlos para poner los valores de uno y detrás los valores del otro. Podrías usar un código como este:

$array1 = [2, 4, 6];
$array2 = [2, 6, 7, 8, 9, 99];

$array3 = [...$array1, ...$array2];

Ten en cuenta que el operador "..." solamente funcionará en versiones recientes de PHP.

Miguel Angel
3295 146 215 17