Arrays Associativos 2D
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 31 de 68.
Embora você tenha trabalhado com arrays bidimensionais usando índices numéricos, você também pode criar dados mais estruturados usando arrays associativos tanto no nível principal quanto dentro dos arrays aninhados. Essa abordagem utiliza chaves de string em vez de números, tornando seus dados muito mais descritivos e fáceis de entender.
Veja como criar um array associativo 2D onde cada elemento possui chaves de string significativas:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
],
"charlie" => [
"name" => "Charlie Brown",
"grade" => 95
]
];
?>Você também pode misturar abordagens, usando índices numéricos para o array principal enquanto mantém arrays associativos internamente:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>Esta estrutura é incrivelmente poderosa para organizar dados complexos, como perfis de usuários, catálogos de produtos ou qualquer cenário em que você precise armazenar várias propriedades relacionadas para cada item. As chaves de string tornam seu código autodocumentado e muito mais fácil de manter do que lembrar posições numéricas.
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á uma entrada: um array associativo 2D representando um inventário de produtos em formato JSON. Cada produto possui um ID de produto único como chave, e o valor é um array associativo contendo o "name" e o "price" do produto. Leia a entrada, converta a string JSON em um array associativo 2D, itere por todos os produtos e imprima as informações de cada produto no formato: ID: [product_id] - Name: [name] - Price: $[price]
Cada produto deve ser impresso em uma linha separada.
Formato de entrada: Uma linha contendo um objeto JSON representando o inventário de produtos (exemplo: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
Saída esperada: Cada produto impresso em uma linha separada no formato ID: [product_id] - Name: [name] - Price: $[price]
Folha de consulta
Você pode criar arrays associativos 2D usando chaves de string tanto no nível principal quanto dentro de arrays aninhados:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
]
];
?>Você também pode misturar abordagens, usando índices numéricos para o array principal com arrays associativos dentro:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>Chaves de string tornam seus dados autodocumentados e mais fáceis de manter do que posições numéricas.
Experimente você mesmo
<?php
// Lê a entrada JSON
$input = fgets(STDIN);
// Converte JSON para um array associativo
$inventory = (array)json_decode($input, true);
// TODO: Escreva seu código abaixo para iterar pelo inventário e imprimir cada produto
?>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