Инструкция continue в PHP
Освен инструкцията break, която прекратява
работата на цикъл, съществува и инструкцията
continue, която започва нова итерация
на цикъла. Тази инструкция понякога може да бъде
полезна за опростяване на кода, въпреки че почти
винаги задачата може да се реши и без нея. Нека
разгледаме практически пример.
Нека имаме даден масив с числа. Нека
го обходим с цикъл и числата, които се делят
на 2, да повдигнем на квадрат и да изведем
на екрана, а числата, които се делят на 3,
да повдигнем на куб и да изведем на екрана.
Ето решението на описаната задача:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
echo $res;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
echo $res;
}
}
?>
Както виждате, редът echo $res
се повтаря два пъти. Нека го изнесем
извън if, ето така:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
}
echo $res; // изнесохме извеждането извън условието
}
?>
Сега нашият скрипт обаче работи малко
по-различно: ще се окаже, че и за обикновените елементи,
необработени от нашия if, ще
се извършва извеждане на променливата $res
на екрана, което според условието на нашата задача
не ни е необходимо.
Нека поправим проблема, като добавим към нашия if
още едно условие else, което ще се задейства
за елементи, които не се делят на 2 и
3, и ще извикаме там инструкцията continue,
която веднага ще ни прехвърля
към нова итерация на цикъла:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
} else {
continue; // ще преминем към нова итерация на цикъла
}
echo $res; // ще се изпълни, ако се дели на 2 или 3
}
?>
Напишете цикъл, който извежда само
чётните числа от 1 до 100,
пропускайки нечётните с помощта на continue.