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: