Príkaz continue v PHP
Okrem inštrukcie break, ktorá ukončuje
prácu cyklu, existuje aj inštrukcia
continue, ktorá spúšťa novú iteráciu
cyklu. Táto inštrukcia môže byť niekedy
užitočná na zjednodušenie kódu, hoci takmer
vždy je možné úlohu vyriešiť aj bez nej. Pozrime
sa na praktický príklad.
Predpokladajme, že máme dané pole s číslami. Prejdime
ho cyklom a čísla, ktoré sú deliteľné 2,
umocnime na druhú a vypíšme
na obrazovku, a čísla, ktoré sú deliteľné 3,
umocnime na tretiu a vypíšme na obrazovku.
Tu je riešenie opísanej ú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;
}
}
?>
Ako vidíte, riadok echo $res
sa opakuje dvakrát. Presuňme ho
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; // presunuli sme výpis mimo podmienku
}
?>
Teraz však náš skript funguje trochu
inak: ukáže sa, že aj pre bežné prvky,
ktoré neboli spracované cez našu podmienku if, sa bude
vykonávať výpis premennej $res
na obrazovku, čo podľa podmienok našej úlohy
nechceme.
Opravme problém pridaním ďalšej podmienky else k nášmu if,
ktorá sa aktivuje
pre prvky, ktoré nie sú deliteľné 2 a
3, a zavolajme tam príkaz continue,
ktorá nás okamžite prehodí
na novú iteráciu 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; // prejdeme na novú iteráciu cyklu
}
echo $res; // vykoná sa, ak je deliteľné 2 alebo 3
}
?>
Napíšte cyklus, ktorý vypíše len
párne čísla od 1 do 100,
pričom nepárne preskočí pomocou continue.