Menu
Coddy logo textTech

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.

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á 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


?>
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