Menu
Coddy logo textTech

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.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Você 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);
?>
quiz iconTeste seus conhecimentos

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