Menu
Coddy logo textTech

Iterar con bucles anidados

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy. Lección 30 de 68.

Al trabajar con matrices 2D, a menudo necesitas procesar cada elemento, lo que requiere visitar cada fila y después cada columna dentro de esa fila. Aquí es donde los bucles anidados se vuelven esenciales. Utilizas un bucle dentro de otro para recorrer sistemáticamente toda la estructura de la cuadrícula.

El bucle externo itera a través de cada fila del array 2D, mientras que el bucle interno procesa cada elemento dentro de la fila actual. Así es como funciona con un bucle foreach:

<?php
$schedule = [
    ["Meeting", "Lunch", "Presentation"],
    ["Training", "Review", "Planning"],
    ["Workshop", "Break", "Demo"]
];

foreach ($schedule as $day) {
    foreach ($day as $appointment) {
        echo $appointment . "\n";
    }
}
?>

También puedes usar bucles for tradicionales cuando necesites más control sobre los índices. Este enfoque te da acceso tanto a las posiciones de las filas como de las columnas:

<?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 patrón de bucles anidados es fundamental para procesar completamente matrices 2D, ya sea que estés mostrando datos, realizando cálculos o buscando valores específicos en toda la estructura de la cuadrícula.

challenge icon

Desafío

Fácil

Recibirás una entrada: una matriz 2D que representa la disposición de los asientos de un aula en formato JSON. Cada matriz interna representa una fila de asientos, y cada elemento contiene el nombre de un estudiante o una cadena vacía para los asientos vacantes. Lee la entrada, convierte la cadena JSON en una matriz 2D, utiliza bucles anidados para recorrer toda la disposición de los asientos e imprime el nombre de cada estudiante junto con su posición en el formato: Row X, Seat Y: Name

Omite los asientos vacantes (cadenas vacías) e imprime información únicamente para los asientos ocupados. Las filas y los asientos deben numerarse comenzando desde 1 (no desde 0).

Formato de entrada: Una línea que contiene una matriz JSON que representa la disposición de los asientos (ejemplo: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])

Salida esperada: Cada asiento ocupado se imprime en una línea separada con el formato Row X, Seat Y: Name, donde X es el número de fila e Y es el número de asiento (ambos comienzan desde 1)

Pruébalo tú mismo

<?php
// Lee la entrada JSON
$input = trim(fgets(STDIN));

// Convierte la cadena JSON a un array 2D
$seating = (array)json_decode($input, true);

// TODO: Escribe tu código debajo
// Usa bucles anidados para iterar a través de las filas y asientos
// Recuerda omitir los asientos vacíos y numerar las filas/asientos empezando desde 1


?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de PHP online