Інструкцыя 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.