(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 .
|