Mesclando Arrays Associativos
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 15 de 68.
Enquanto o array_merge() funciona perfeitamente com arrays indexados, seu comportamento muda significativamente ao trabalhar com arrays associativos. A principal diferença é 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);
// Saída: 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", já que não foi sobrescrito. Este comportamento torna o array_merge() perfeito para sistemas de configuração onde você deseja que os valores padrão sejam sobrescritos pelas preferências do usuário.
A ordem dos argumentos importa — os valores dos arrays listados posteriormente na chamada da função têm precedência sobre os anteriores. Este comportamento de sobrescrita aplica-se apenas a chaves de string; chaves numéricas são sempre reindexadas sequencialmente, assim como em arrays indexados.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilVocê receberá duas entradas: um array de configuração padrão e um array de preferências do usuário, ambos no formato JSON. Leia ambas as entradas, converta cada string JSON em um array associativo, use array_merge() para combiná-los (com as preferências do usuário substituindo os padrões) e imprima a configuração mesclada usando print_r().
Formato de entrada: Duas linhas - cada linha contém um objeto JSON representando um array associativo (exemplo: {"theme":"light","language":"english"})
Saída esperada: O array de configuração mesclado onde as preferências do usuário substituem os valores padrão, exibido usando print_r()
Folha de consulta
Ao mesclar arrays associativos com array_merge(), chaves de string duplicadas são sobrescritas por valores de arrays posteriores:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Saída: Array ( [theme] => dark [language] => english [notifications] => false )
?>Comportamentos principais:
- Chaves de string com o mesmo nome: valores de arrays posteriores sobrescrevem os anteriores
- A ordem importa: arrays listados posteriormente têm precedência
- Chaves numéricas são sempre reindexadas sequencialmente
- Perfeito para sistemas de configuração com valores padrão e substituições de usuário
Experimente você mesmo
<?php
// Lê as duas entradas JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// Converte 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
// Exibe 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 Leaderboard