Continue в циклах

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

Тренажер PHP

Если `break` — это аварийный тормоз, то `continue` — это кнопка "пропустить". Этот оператор не прерывает весь цикл, а досрочно завершает только текущую итерацию и немедленно переходит к следующей. Это чрезвычайно удобно, когда нужно отфильтровать данные "на лету" — например, пропустить обработку невалидных значений, пустых строк или элементов, не соответствующих критериям, не выходя из цикла. В этом тренажере мы подробно разберем, как работает `continue`, чем он отличается от `break`, как его применять в разных циклах для фильтрации данных и как избежать частых ловушек, например, бесконечных циклов при его неправильном использовании.

Список тем

Основы: Пропуск итерации

id: 38952_task_cont_1

Задача этого цикла — вывести числа от 0 до 4, но пропустить число 2. Для этого используется специальный оператор, который переходит к следующей итерации. Вставьте пропущенное ключевое слово в код.

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

for ($i = 0; $i < 5; $i++) {
    if ($i == 2) {
        // Пропускаем эту итерацию
        input1S;
    }
    echo $i . " ";
}

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

Как `continue` влияет на результат?

id: 38952_task_cont_2

Этот цикл `foreach` суммирует числа в массиве. Однако, с помощью `continue`, он должен пропускать все отрицательные числа и нули. Предскажите, какое итоговое значение будет в переменной `$sum`.

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

$numbers = [10, -5, 20, -15];
$sum = 0;

foreach ($numbers as $num) {
    if ($num <= 0) {
        continue;
    }
    $sum += $num;
}

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

continue против break: ключевое различие

id: 38952_task_cont_3

Перед вами два почти идентичных фрагмента кода. Один использует `break`, другой — `continue`. Сопоставьте каждый код с его правильным результатом, чтобы наглядно увидеть разницу в их поведении.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
// Код A: с continue
for ($i = 0; $i < 4; $i++) {
    if ($i == 1) continue;
    echo $i;
}
// Код Б: с break
for ($i = 0; $i < 4; $i++) {
    if ($i == 1) break;
    echo $i;
}
Выведет "0" и остановится
Выведет "023", пропустив "1"
Сообщения
Проверить
Показать подсказку

Фильтрация массива

id: 38952_task_cont_4

Этот скрипт должен собрать в строку имена всех активных пользователей, пропуская тех, у кого статус 'banned'. Напишите, какая строка будет выведена в результате работы кода. Обратите внимание на пробелы и запятые.

Что должно получиться?
<?php
$users = [
    'Alice' => 'active',
    'Bob' => 'banned',
    'Charlie' => 'active'
];

$active_users_list = "";
foreach ($users as $name => $status) {
    if ($status === 'banned') {
        continue;
    }
    $active_users_list .= $name . ", ";
}
echo $active_users_list;
?>
Сообщения
Проверить
Показать подсказку

Ловушка с continue в цикле while

id: 38952_task_cont_5

Этот код должен был вывести числа 0, 1, 3, 4. Но из-за неправильного расположения `continue` он создает бесконечный цикл. Исправьте строку, чтобы избежать "зависания" и получить верный результат. Это важный нюанс!

Найдите ошибку и исправьте
<?php
$i = 0;
while ($i < 5) {
    if ($i === 2) {
        continue;
    }
    echo $i . " ";
    $i++;
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите код для вывода четных чисел

id: 38952_task_cont_6

Используя цикл `for` и оператор `continue`, соберите скрипт, который выводит только четные числа в диапазоне от 1 до 10. Нечетные числа должны быть пропущены.

Перетяните в правильном порядке строки из одного блока в другой
for ($i = 1; $i <= 10; $i++) {
continue;
if ($i % 2 != 0) {
}
break;
echo $i . " ";
if ($i % 2 == 0) {
<?php
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Continue во вложенном цикле

id: 38952_task_cont_7

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

Выберите правильный вариант ответа
<?php
for ($i = 0; $i < 2; $i++) {
    echo "i=$i:";
    for ($j = 0; $j < 3; $j++) {
        if ($j == 1) {
            continue;
        }
        echo " j=$j";
    }
    echo "\n";
}
?>
Сообщения
Проверить
Показать подсказку
🚀 Визуализатор кода
0 / 0
Скорость:
Режим:
💡 Что происходит?
Загрузите пример для начала...
🤔
Проверка знаний
История шагов
Готов
НайтиКурс.Ру