Инструкција continue во PHP
Покрај инструкцијата break, која ја завршува
работата на циклусот, постои и инструкцијата
continue, која започнува нова итерација
на циклусот. Оваа инструкција понекогаш може да биде
корисна за поедноставување на кодот, иако практично
секогаш задачата може да се реши и без неа. Ајде
да погледнеме на практичен пример.
Нека ни е даден array со броеви. Ајде
да го итерираме со циклус и броевите кои се делат
на 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.