Cyklus v PHP je opakovanie daných činností, kým platí nejaká podmienka. Existuje cyklus s podmienkou na začiatku, na konci a iné, zložitejšie typy.
V jazyku PHP sa základný príkaz na cyklus volá while
.
while (podmienka) príkaz;
Príkaz sa bude vykonávať dovtedy, kým je podmienka pravdivá. Ak chceme vykonať viac príkazov, dáme ich do zložených zátvoriek.
$cislo = 1; while ($cislo <= 15) { echo "$cislo "; $cislo++; }
Príklad vypísal čísla od 1 do 15.
Podmienku môžeme testovať aj na konci cyklu.
$mesiac = 14; do { echo "Testujem"; if ($mesiac <= 12) echo "$mesiac. mesiac je platný. "; $mesiac++; } while($mesiac <= 12);
Keďže podmienka sa testuje až po vykonaní príkazov, je zaručené, že príkazy sa vykonajú aspoň raz. V tomto prípade sa vypíše nápis Testujem.
Príkaz for
má v PHP-čku veľa možností, je to však len inak zapísaný cyklus while
. Kód
začiatok; while (podmienka) { príkazy; ďalšie_príkazy; }
je možné zapísať ako
for (začiatok; podmienka; príkazy) { ďalšie_príkazy; }
Najprv jednoduchý príklad:
for ($i = 30; $i > 0; $i--) echo $i." ";
Výsledkom je klesajúci rad čísel od 30 do 1.
Ak je príkazov v jednoduchých zátvorkách viac, oddelíme ich čiarkami.
for ($a = 1, $b = 5; $a <= 5; $a++, $b--) { echo "$a krát $b = ".($a*$b)."<br>"; echo "$a delené $b = ".($a/$b)."<br>"; }
Jednotlivé časti príkazu for
je možné vynechať. Ak vynecháme podmienku, bude stále rovná true
. Toto je najjednoduchší spôsob, ako vyvolať nekonečný cyklus:
for(;;);
Nekonečný cyklus sám o sebe nebýva užitočný.
Príkazom break
náhle zastavíme cyklus.
$teplota = 70; // 1 je vždy pravdivá hodnota while (1) { echo "Aktuálna teplota: $teplota K<br>"; $teplota -= 10; if ($teplota < 0) { echo "Chyba, t nemôže byť < 0 Kelvinov."; break; } }
Ak za break
dáme medzeru a číslo, ukončíme tým daný počet vnorených štruktúr.
echo '<table border="1">'; for ($x = 1; $x <= 5; $x++) { echo "<tr>"; // nový riadok for ($y = 1; $y <= 4; $y++) { // nový stĺpec echo "<td>$y</td>"; if ($x == 3 && $y == 2) break 2; // ukončenie obidvoch cyklov for } echo "</tr>"; // koniec riadku } echo '</table>';
Po vypísaní druhého stĺpca v treťom riadku tabuľky sa cyklus úplne ukončí.
Príkaz continue
preskočí rovno na ďalšie opakovanie (iteráciu) cyklu. Nasledujúci skript vypíše všetky nepárne čísla od 1 do 25:
$i = 0; while ($i < 25) { $i++; if ($i % 2 == 0) continue; echo "$i "; }
Podobne ako pri break
s medzerou a číslom, continue x
preskočí na x
-tý vnorený cyklus.
Všetko sa dá zapísať mnohými spôsobmi a PHP je v tom majster. Miesto zložených zátvoriek, ohraničujúcich viacero príkazov cyklu, môžeme používať dvojbodku a endwhile
, resp. endfor
.
$text = "-"; while ($text != "----"): echo $text; $text .= "-"; endwhile;