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;