Оператор 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 только пропускает текущую итерацию.
Задание
ЛегкоПрочитайте две строки ввода:
- Список целых чисел, разделенных запятыми (например,
3,7,12,5,8,20,15) - Число-делитель
Используйте цикл 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
// Выведите все остальные числа, каждое на отдельной строке
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators