Forum und email

for

A for cilus a legbonyolultabb ciklus a PHP-ben. Éppen úgy viselkedik, mint a C nyelvbeli párja (–> C-ben értőknek tovább gomb). A for ciklus szintaxisa:

for (kif1; kif2; kif3) 
    utasítás

[A fenti for szerkezettel megegyező az alábbi, remélhetőleg már ismerős kifejezés:

kif1;
while (kif2) {
    utasítás;
    kif3;
}
     
Remélem így már érthetőbb lesz az alábbi magyarázat].

Az első kifejezés (kif1) a ciklus kezdetén egyszer kerül végrehajtásra.

Minden iteráció elején kif2 kiértékelődik. Ha értéke TRUE, akkor a ciklus folytatódik, és az utasításra kerül a vezérlés. Ha értéke FALSE, akkor a ciklus véget ér.

Minden iteráció végén kif3 is végrehajtásra kerül.

Bármelyik kifejezést el lehet hagyni. Ha kif2 üres, az azt jelenti, hogy a ciklus a végtelenségig fut [hacsak nem jön a jó tündér break utasítás képében...] (A PHP implicit TRUE-nak feltételezi az üres kif2-t, mint a C.) Ez nem annyira haszontalan, mint elsőre amennyire elsőnek tűnik, hiszen gyakran fejezheted be a ciklust egy feltételes kifejezésbe ágyazott break kifejezéssel a for feltétel kifejezésének kiértékelése helyett.

Nézd az alábbi példákat, mindegyikük kiírja a számokat 1-től 10-ig:

<?php
/* téma */

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

/* 1. variáció */

for ($i 1; ; $i++) {
    if (
$i 10) {
        break;
    }
    echo 
$i;
}

/* 2. variáció */

$i 1;
for (; ; ) {
    if (
$i 10) {
        break;
    }
    echo 
$i;
    
$i++;
}

/* 3. variáció - Coda :-) */

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

Természetesen "a téma" a legbarátságosabb (vagy esetleg a 3. variáció). Sok helyen hasznos azonban, hogy üres kifejezés is írható for ciklusba...

A PHP a for ciklus esetén is megengedi az alternatív szintaxishasználatát:

for (kif1; kif2; kif3):
    utasítás
    ...
endfor;