Fusionar arrays asociativos
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 15 de 68.
Mientras que array_merge() funciona sin problemas con arrays indexados, su comportamiento cambia significativamente cuando se trabaja con arrays asociativos. La diferencia clave es cómo maneja las claves de cadena duplicadas entre los arrays que se están combinando.
Al fusionar arreglos asociativos, si ambos arreglos contienen la misma clave de cadena, el valor del último arreglo sobrescribirá el valor del primer arreglo:
<?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ó como "english" ya que no fue sobrescrito. Este comportamiento hace que array_merge() sea perfecto para sistemas de configuración donde deseas que los valores predeterminados sean sobrescritos por las preferencias del usuario.
El orden de los argumentos importa: los valores de los arrays enumerados más tarde 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, al igual que con los arrays indexados.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilRecibirás dos entradas: un array de configuración predeterminado y un array de preferencias de usuario, ambos en formato JSON. Lee ambas entradas, convierte cada cadena JSON en un array asociativo, utiliza array_merge() para combinarlos (con las preferencias de usuario sobrescribiendo los valores predeterminados) e imprime la configuración combinada utilizando 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 de usuario sobrescriben los valores predeterminados, mostrado utilizando print_r()
Hoja de referencia
Al fusionar arrays asociativos con array_merge(), las claves de cadena duplicadas son sobrescritas por los valores de los arrays posteriores:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Salida: Array ( [theme] => dark [language] => english [notifications] => false )
?>Comportamientos clave:
- Claves de cadena con el mismo nombre: los valores de los arrays posteriores sobrescriben a los anteriores
- El orden importa: los arrays enumerados más tarde tienen prioridad
- Las claves numéricas siempre se reindexan secuencialmente
- Ideal para sistemas de configuración con valores predeterminados y personalizaciones de usuario
Pruébalo tú mismo
<?php
// Leer las dos entradas JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// Convertir las cadenas JSON en arreglos asociativos
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Escribe tu código a continuación para fusionar los arreglos
// Mostrar 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ón