Iterando com Loops Aninhados
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 30 de 68.
Ao trabalhar com arrays bidimensionais, muitas vezes você precisa processar cada elemento, o que requer visitar cada linha e depois cada coluna dentro dessa linha. É aqui que os loops aninhados tornam-se essenciais — você usa um loop dentro de outro para percorrer sistematicamente toda a estrutura da grade.
O loop externo itera por cada linha do array 2D, enquanto o loop interno processa cada elemento dentro da linha atual. Veja como isso funciona com um loop foreach:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>Você também pode usar loops for tradicionais quando precisar de mais controle sobre os índices. Esta abordagem dá acesso tanto às posições de linha quanto de coluna:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Este padrão de loop aninhado é fundamental para processar arrays 2D completamente, seja para exibir dados, realizar cálculos ou buscar valores específicos em toda a estrutura de grade.
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 2D representando a disposição dos assentos de uma sala de aula em formato JSON. Cada array interno representa uma fileira de assentos, e cada elemento contém o nome de um aluno ou uma string vazia para assentos vagos. Leia a entrada, converta a string JSON em um array 2D, use loops aninhados para iterar por toda a disposição dos assentos e imprima o nome de cada aluno junto com sua posição no formato: Row X, Seat Y: Name
Pule os assentos vagos (strings vazias) e imprima apenas as informações dos assentos ocupados. As fileiras e os assentos devem ser numerados começando em 1 (não 0).
Formato de entrada: Uma linha contendo um array JSON representando a disposição dos assentos (exemplo: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
Saída esperada: Cada assento ocupado impresso em uma linha separada no formato Row X, Seat Y: Name, onde X é o número da fileira e Y é o número do assento (ambos começando em 1)
Folha de consulta
Use loops aninhados para processar cada elemento em um array 2D. O loop externo itera pelas linhas, enquanto o loop interno processa os elementos dentro de cada linha.
Usando loops foreach:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>Usando loops for tradicionais para acesso por índice:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Experimente você mesmo
<?php
// Lê a entrada JSON
$input = trim(fgets(STDIN));
// Converte a string JSON para um array 2D
$seating = (array)json_decode($input, true);
// TODO: Escreva seu código abaixo
// Use loops aninhados para iterar pelas fileiras e assentos
// Lembre-se de pular assentos vazios e numerar fileiras/assentos começando de 1
?>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