Вложенные циклы

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Вложенные циклы — это мощная концепция в программировании, когда один цикл размещается внутри другого. Представьте себе часы: пока большая стрелка (внешний цикл) делает один оборот, маленькая (внутренний цикл) успевает сделать 12. Точно так же работает и в коде: на каждую итерацию внешнего цикла, внутренний цикл выполняется полностью от начала до конца. Это позволяет решать сложные задачи, такие как работа с многомерными массивами (таблицами, матрицами), генерация координатных сеток, создание сложных HTML-таблиц и многое другое. В этом тренажере мы научимся строить такие конструкции, понимать, как они работают, предсказывать их результат и применять для решения практических задач.

Список тем

1. Основы вложенных циклов

id: 38953_task_nest_1

Давайте создадим простейший вложенный цикл. Внешний цикл будет выполняться 2 раза, а внутренний — 3 раза на каждую итерацию внешнего. Заполните пропуски, чтобы определить переменные для счетчиков и их условия.

Заполните пропуски
<?php

// Внешний цикл
for ($i = 0; $i < 2; $i++) {
    echo "Внешняя итерация: $i\n";
    
    // Внутренний цикл
    for (input1S = 0; input2S; $j++) {
        echo "  - Внутренняя итерация: $j\n";
    }
}

?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Предскажите порядок вывода

id: 38953_task_nest_2

Вложенные циклы часто используются для генерации пар значений. Проанализируйте код и выберите вариант, который точно соответствует тому, что будет выведено на экран. Помните, что на каждую итерацию внешнего цикла, внутренний выполняется полностью.

Выберите правильный вариант ответа
<?php

for ($i = 1; $i <= 2; $i++) {
    foreach (['A', 'B'] as $j) {
        echo "$i$j ";
    }
}

?>
Сообщения
Проверить
Показать подсказку

3. Сколько всего итераций?

id: 38953_task_nest_3

Этот код считает общее количество итераций внутреннего цикла. Проанализируйте диапазоны обоих циклов и напишите итоговое число, которое выведет скрипт.

Что должно получиться?
<?php

$total_iterations = 0;
for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 4; $j++) {
        $total_iterations++;
    }
}

echo $total_iterations;

?>
Сообщения
Проверить
Показать подсказку

4. Ошибка с одинаковыми счетчиками

id: 38953_task_nest_4

В этом коде допущена частая ошибка: для внешнего и внутреннего циклов используется одна и та же переменная-счетчик (`$i`). Это приводит к непредсказуемому поведению и неверному результату. Найдите и исправьте строку с ошибкой.

Найдите ошибку и исправьте
<?php
// Цель: вывести пары (0,0), (0,1), (1,0), (1,1)
for ($i = 0; $i < 2; $i++) {
    for ($i = 0; $i < 2; $i++) {
        echo "($i, $i)\n";
    }
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Нарисуйте прямоугольник из символов

id: 38953_task_nest_5

Вложенные циклы отлично подходят для рисования простых фигур в консоли. Расставьте строки кода в правильном порядке, чтобы нарисовать прямоугольник 4x3 из символов '#'.

Расставьте строки в правильном порядке
?>
}
}
echo "\n";
for ($col = 0; $col < 4; $col++) {
for ($row = 0; $row < 3; $row++) {
<?php
echo "#";
Сообщения
Проверить
Показать подсказку

6. Перебор многомерного массива

id: 38953_task_nest_6

Соберите из фрагментов кода скрипт, который перебирает двумерный массив (массив массивов) и выводит все его элементы. Это классический пример использования вложенных `foreach`.

Перетяните в правильном порядке строки из одного блока в другой
echo $number . " ";
foreach ($row as $number) {
$matrix = [[1, 2], [3, 4]];
foreach ($matrix as $row) {
<?php
}
}
foreach ($number as $row) {
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Поиск во вложенной структуре

id: 38953_task_nest_7

Перед вами структура данных с группами студентов. Нужно найти студента по имени 'Eva'. Используйте вложенные циклы и `break 2`, чтобы досрочно прервать оба цикла после находки. Перетащите элементы из банка.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$groups = [
    'Group A' => ['John', 'Peter'],
    'Group B' => ['Anna', 'Eva', 'Mike'],
];

foreach ($groups as $groupName => $students) {
    echo "Проверяем группу $groupName...\n";
    foreach (input1S as $studentName) {
        if (input2S === 'Eva') {
            echo "Найдена Eva в группе $groupName!";
            input3S;
        }
    }
}
?>
break 2
$students
$studentName
continue
break
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

PHP: запуск кода в браузере

id: 38953_compiler
🐘
Запустить тренажёр (PHP)

Визуализатор кода: PHP: Вложенные циклы - Генератор расписания

id: 38953_visualizer

Создаем расписание занятий на неделю с помощью вложенных циклов. Внешний цикл проходит по дням недели, внутренний - по временным слотам, генерируя HTML таблицу.

0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру