Menu
Coddy logo textTech

Оператор continue

Часть раздела Основы путешествия по PHP на Coddy — урок 52 из 71.

В то время как break полностью выходит из цикла, иногда вы хотите только пропустить текущую итерацию и перейти к следующей. Именно это делает оператор continue.

Когда PHP встречает continue, он немедленно переходит к следующей итерации цикла, пропуская оставшийся код в текущей итерации.

<?php
for ($i = 1; $i <= 5; $i++) {
    if ($i === 3) {
        continue;
    }
    echo $i . "\n";
}
?>

Это выводит:

1
2
4
5

Обратите внимание, что 3 отсутствует. Когда $i равно 3, оператор continue пропускает echo и сразу переходит к следующей итерации, где $i становится 4.

Обычный случай использования — фильтрация нежелательных значений при обработке массива:

<?php
$numbers = [10, -5, 8, -3, 12];

foreach ($numbers as $num) {
    if ($num < 0) {
        continue;
    }
    echo $num . "\n";
}
?>

Это выводит только положительные числа: 10, 8 и 12. Отрицательные значения пропускаются, но цикл продолжает проходить по всем элементам.

Ключевое отличие: break полностью останавливает цикл, в то время как continue только пропускает текущую итерацию.

challenge icon

Задание

Легко

Прочитайте две строки ввода:

  1. Список целых чисел, разделенных запятыми (например, 3,7,12,5,8,20,15)
  2. Число-делитель

Используйте цикл foreach для перебора массива. Используйте continue, чтобы пропустить любые числа, делящиеся на заданный делитель. Выведите все остальные числа, каждое на отдельной строке.

Пример 1:

Если входные данные 1,2,3,4,5,6,7,8,9,10 и 3, то вывод должен быть:

1
2
4
5
7
8
10

(Числа 3, 6 и 9 пропущены, потому что они делятся на 3)

Пример 2:

Если входные данные 10,15,20,25,30 и 5, то вывод должен быть:

(Все числа делятся на 5, поэтому ничего не выводится)

Пример 3:

Если входные данные 7,14,21,10,5 и 7, то вывод должен быть:

10
5

Шпаргалка

Оператор continue пропускает текущую итерацию цикла и переходит к следующей, не выходя полностью из цикла.

Базовый пример с циклом for:

<?php
for ($i = 1; $i <= 5; $i++) {
    if ($i === 3) {
        continue;
    }
    echo $i . "\n";
}
?>

Это выводит 1, 2, 4, 5 (пропуская 3).

Использование continue с foreach для фильтрации значений массива:

<?php
$numbers = [10, -5, 8, -3, 12];

foreach ($numbers as $num) {
    if ($num < 0) {
        continue;
    }
    echo $num . "\n";
}
?>

Это выводит только положительные числа (10, 8, 12), пропуская отрицательные значения.

Ключевое отличие: break полностью выходит из цикла, в то время как continue только пропускает до следующей итерации.

Попробуйте сами

<?php
// Читаем ввод
$input = trim(fgets(STDIN));
$divisor = intval(trim(fgets(STDIN)));

// Преобразуем строку, разделённую запятыми, в массив целых чисел
$numbers = array_map('intval', explode(',', $input));

// TODO: Напишите свой код ниже
// Используйте цикл foreach для перебора $numbers
// Используйте continue для пропуска чисел, делящихся на $divisor
// Выведите все остальные числа, каждое на отдельной строке

?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы