Příkaz continue v PHP
Kromě příkazu break, který ukončuje
práci cyklu, existuje také příkaz
continue, který spouští novou iteraci
cyklu. Tento příkaz může být někdy
užitečný pro zjednodušení kódu, ačkoli prakticky
vždy lze úlohu vyřešit i bez něj. Podívejme se
na praktickém příkladu.
Předpokládejme, že máme pole s čísly. Projděme
jej cyklem a čísla, která jsou dělitelná
2, umocníme na druhou a vypíšeme
na obrazovku, a čísla, která jsou dělitelná 3,
umocníme na třetí a vypíšeme na obrazovku.
Zde je řešení popsané úlohy:
<?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;
}
}
?>
Jak vidíte, řádek echo $res
se opakuje dvakrát. Vynesme jej
mimo if, takto:
<?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; // výpis byl vynesen mimo podmínku
}
?>
Nyní však náš skript funguje trochu
jinak: vyjde to tak, že i pro běžné prvky,
nezpracované prostřednictvím našeho if, bude
proveden výpis proměnné $res
na obrazovku, což podle podmínek naší úlohy
nechceme.
Opravme problém přidáním k našemu if
ještě podmínky else, která bude platit
pro prvky, jež nejsou dělitelné 2 a
3, a zavoláme tam příkaz continue,
který nás okamžitě přenese
na novou iteraci cyklu:
<?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; // přejdeme na novou iteraci cyklu
}
echo $res; // provedeme, pokud je dělitelné 2 nebo 3
}
?>
Napište cyklus, který vypisuje pouze
sudá čísla od 1 do 100,
a přeskočí lichá pomocí continue.