continue

(PHP 4, PHP 5, PHP 7, PHP 8)

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

Замечание: В PHP инструкция continue считает инструкцию switch циклической структурой. Без аргументов инструкция continue внутри инструкции switch ведёт себя аналогично инструкции break, но выдаёт предупреждение, поскольку предполагает, что допустили ошибку. Вызов continue 2 внутри блока switch продолжит выполнение кода со следующей итерации внешнего цикла, если инструкцию switch указали внутри цикла.

Инструкция continue принимает необязательный числовой аргумент, который сообщает, на внешнем цикле какого уровня требуется пропустить оставшуюся часть итерации. Значение по умолчанию равно 1, поэтому пропускается оставшаяся часть итерации текущего цикла.

<?php

$arr
= ['ноль', 'один', 'два', 'три', 'четыре', 'пять', 'шесть'];

foreach (
$arr as $key => $value) {
if (
0 === ($key % 2)) { // Условие пропуска элементов с чётным ключом
continue;
}

echo
$value . "\n";
}

?>

Результат выполнения приведённых примеров:

один
три
пять
<?php

$i
= 0;

while (
$i++ < 5) {
echo
"Внешний\n";

while (
1) {
echo
"Средний\n";

while (
1) {
echo
"Внутренний\n";
continue
3;
}

echo
"Это никогда не выведется.\n";
}

echo
"Это тоже не выведется.\n";
}

?>

Результат выполнения приведённых примеров:

Внешний
Средний
Внутренний
Внешний
Средний
Внутренний
Внешний
Средний
Внутренний
Внешний
Средний
Внутренний
Внешний
Средний
Внутренний

Пропуск точки запятой после инструкции continue сбивает с толку. Вот пример, как лучше не делать:

<?php

for ($i = 0; $i < 5; ++$i) {
if (
$i == 2)
continue
print
"$i\n";
}

?>

Ожидается, что код выведет числа, а не выдаст фатальную ошибку:

0
1
3
4

Список изменений, которые затронули инструкцию continue
Версия Описание
7.3.0 Инструкция continue внутри инструкции switch, которая пытается действовать как инструкция break для инструкции switch, вызовет ошибку уровня E_WARNING.