Mesclando Arrays Associativos
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy. Lição 15 de 68.
Embora array_merge() funcione perfeitamente com arrays indexados, seu comportamento muda significativamente ao trabalhar com arrays associativos. A principal diferença está na forma como ele lida com chaves de string duplicadas entre os arrays que estão sendo mesclados.
Ao mesclar arrays associativos, se ambos os arrays contiverem a mesma chave de string, o valor do array posterior substituirá o valor do 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 )
?>Observe como "theme" mudou de "light" para "dark" e "notifications" mudou de true para false, enquanto "language" permaneceu "english", pois não foi substituído. Esse comportamento torna array_merge() perfeito para sistemas de configuração nos quais você quer que os valores padrão sejam substituídos pelas preferências do usuário.
A ordem dos argumentos é importante: os valores de arrays listados posteriormente na chamada de função têm precedência sobre os anteriores. Esse comportamento de sobrescrita se aplica apenas a chaves de string; as chaves numéricas são sempre reindexadas sequencialmente, assim como acontece com arrays indexados.
Desafio
FácilVocê receberá duas entradas: uma matriz de configuração padrão e uma matriz de preferências do usuário, ambas no formato JSON. Leia ambas as entradas, converta cada string JSON em uma matriz associativa, use array_merge() para combiná-las (com as preferências do usuário substituindo os valores padrão) e imprima a configuração mesclada usando print_r().
Formato da entrada: Duas linhas — cada linha contém um objeto JSON que representa uma matriz associativa (exemplo: {"theme":"light","language":"english"})
Saída esperada: A matriz de configuração mesclada, na qual as preferências do usuário substituem os valores padrão, exibida usando print_r()
Experimente você mesmo
<?php
// Leia as duas entradas JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// Converta as strings JSON em arrays associativos
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Escreva seu código abaixo para mesclar os arrays
// Exiba a configuração mesclada
print_r($mergedConfig);
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de LeaderboardPratique por conta própria: Compilador de PHP online