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 arreglos bidimensionales, a menudo es necesario procesar cada elemento, lo que requiere visitar cada fila y luego cada columna dentro de esa fila. Aquí es donde los bucles anidados se vuelven esenciales: se utiliza 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 bidimensional, mientras que el bucle interno procesa cada elemento dentro de la fila actual. Así es como funciona esto 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 a las 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 arreglos bidimensionales por completo, ya sea que estés mostrando datos, realizando cálculos o buscando valores específicos a través de toda la estructura de cuadrícula.

quiz iconPonte a prueba

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

quiz iconPonte a prueba

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

quiz iconPonte a prueba

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

challenge icon

Desafío

Fácil

Recibirás una entrada: un array bidimensional que representa la disposición de los asientos de un aula en formato JSON. Cada array interno 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 un array bidimensional, utiliza bucles anidados para recorrer toda la disposición de los asientos y muestra 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) y solo muestra la información de los asientos ocupados. Las filas y los asientos deben numerarse empezando desde 1 (no desde 0).

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

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

Hoja de referencia

Usa bucles anidados para procesar cada elemento en un array bidimensional. El bucle externo itera a través de las filas, mientras que el bucle interno procesa los elementos dentro de cada fila.

Usando bucles foreach:

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

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

Usando bucles for tradicionales para el acceso 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";
    }
}
?>

Pruébalo tú mismo

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

// Convertir la cadena JSON a un arreglo bidimensional
$seating = (array)json_decode($input, true);

// TODO: Escribe tu código a continuación
// Usa bucles anidados para iterar a través de filas y asientos
// Recuerda omitir los asientos vacíos y numerar las filas/asientos comenzando 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