PHP-тегі continue нұсқаулығы
Цикл жұмысын аяқтайтын 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 көмегімен өткізіп жіберіңіз.