Forum und email
for

for

Cykly for jsou nejsložitějšími cykly v PHP. Chovají se stejně, jako jejich soukmenovci v C. Syntaxe cyklu for je následující:

for (expr1; expr2; expr3) statement

První výraz (expr1) je ohodnocen (proveden) jednou, bezpodmínečně, na začátku cyklu.

Na začátku každé iterace je ohodnocen výraz expr2. Pokud má hodnotu TRUE, cyklus pokračuje a zpracovává se kód uvnitř cyklu. Je-li naopak jeho hodnota FALSE, provádění cyklu končí.

Na konci každé iterace se ohodnotí (provede) výraz expr3.

Každý z výrazů může být prázdný. Prázdný výraz expr2 znamená, že cyklus bude probíhat nekonečně dlouho (PHP, stejně jako C, implicitně předpokládá hodnotu TRUE). To nemusí být tak bez užitku, jak si můžete myslet. Často můžete totiž chtít ukončit cyklus pomocí podmíněného příkazu break, namísto použití pravdivostního výrazu v příkazu cyklu for.

Předpokládejme následující příklady. Všechny zobrazí čísla od 1 do 10:

/* příklad 1 */

for ($i = 1; $i <= 10; $i++) {
    print $i;
}

/* příklad 2 */

for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    print $i;
}

/* příklad 3 */

$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    print $i;
    $i++;
}

/* příklad 4 */

for ($i = 1; $i <= 10; print $i, $i++);

První příklad samozřejmě vypadá nejlépe (nebo možná i ten čtvrtý), ale můžete přijít na to, že schopnost používat prázdné výrazy v cyklech for nemusí být někdy úplně k zahození.

PHP podporuje pro cykly for také alternativní "dvojtečkovou syntaxi".

for (expr1; expr2; expr3): statement; ...; endfor;

Jiné jazyky mají příkaz foreach k traverzování polí nebo hashů. V PHP 3 nic takového není, PHP 4 ano (viz foreach). V PHP 3 můžete k dosažení stejného efektu kombinovat while s funkcemi list() a each(). Příklady najdete v dokumentaci.