(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
| Версия | Описание |
|---|---|
| 7.3.0 |
Инструкция continue внутри инструкции switch,
которая пытается действовать как инструкция break
для инструкции switch, вызовет ошибку
уровня E_WARNING.
|