Fusionar arrays asociativos
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy. Lección 15 de 68.
Aunque array_merge() funciona perfectamente con arrays indexados, su comportamiento cambia significativamente al trabajar con arrays asociativos. La diferencia clave es cómo gestiona las claves de cadena duplicadas entre los arrays que se están fusionando.
Al combinar arrays asociativos, si ambos arrays contienen la misma clave de cadena, el valor del array posterior sobrescribirá el valor del array anterior:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Outputs: Array ( [theme] => dark [language] => english [notifications] => false )
?>Observa cómo "theme" cambió de "light" a "dark" y "notifications" cambió de true a false, mientras que "language" permaneció en "english" porque no se sobrescribió. Este comportamiento hace que array_merge() sea perfecto para sistemas de configuración en los que quieres que los valores predeterminados sean sobrescritos por las preferencias del usuario.
El orden de los argumentos importa: los valores de los arrays incluidos más adelante en la llamada a la función tienen prioridad sobre los anteriores. Este comportamiento de sobrescritura solo se aplica a las claves de cadena; las claves numéricas siempre se vuelven a indexar secuencialmente, igual que con los arrays indexados.
Desafío
FácilRecibirás dos entradas: un array de configuración predeterminado y un array de preferencias del usuario, ambos en formato JSON. Lee ambas entradas, convierte cada cadena JSON en un array asociativo, usa array_merge() para combinarlos (con las preferencias del usuario sobrescribiendo los valores predeterminados) e imprime la configuración combinada usando print_r().
Formato de entrada: Dos líneas: cada línea contiene un objeto JSON que representa un array asociativo (ejemplo: {"theme":"light","language":"english"})
Salida esperada: El array de configuración combinado, donde las preferencias del usuario sobrescriben los valores predeterminados, mostrado mediante print_r()
Pruébalo tú mismo
<?php
// Lee las dos entradas JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// Convierte las cadenas JSON a arrays asociativos
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Escribe tu código debajo para fusionar los arrays
// Muestra la configuración fusionada
print_r($mergedConfig);
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificaciónPractica por tu cuenta: Compilador de PHP online