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:
1 2 for (kif1; kif2; kif3) utasítás 3 |
[A fenti for szerkezettel ekvivalens az alábbi, remélhetőleg már ismerős kifejezés:
1 2 kif1; 3 while (kif2) 4 { 5 utasítás; 6 kif3; 7 } 8 |
Az első kifejezés (kif1) egyszer értékelődik ki (hajtódik végre), mégpedig a ciklus elején.
Minden iteráció elején kif2 kiértékelődik. Ha értéke TRUE, a ciklus folytatódik, és az utasítás végrehajtódik. Ha értéke FALSE, a ciklus véget ér.
Minden iteráció végén kif3 kiértékelődik (végrehajtódik).
Bármelyik kifejezést el lehet hagyni. Ha kif2 üres, az azt jelenti, hogy a iklus 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, mint a C). Ez nem annyira haszontalan, mint gondolnád, hiszen gyakran fejezheted be a ciklust egy feltételes kifejezésbe ágyazott break kifejezéssel a for igazságértékelése helyett.
Nézd az alábbi példákat. Mindegyikük kiírja a számokat egytől tízig:
1 2 3 /* téma */ 4 5 for ($i = 1; $i <= 10; $i++) { 6 print $i; 7 } 8 9 /* 1. variáció */ 10 11 for ($i = 1;;$i++) { 12 if ($i > 10) { 13 break; 14 } 15 print $i; 16 } 17 18 /* 2. variáció */ 19 20 $i = 1; 21 for (;;) { 22 if ($i > 10) { 23 break; 24 } 25 print $i; 26 $i++; 27 } 28 29 /* 3. variáció - Coda :-) */ 30 31 for ($i = 1; $i <= 10; print $i, $i++) ; 32 33 |
Természetesen "a téma" a legbarátságosabb (vagy esetleg a 3. variáció), de majd meg fogod látni, hogy sok helyen hasznos dolog, hogy üres kifejezés is írható for ciklusba...
A PHP megengedi az alternatív szintaxist is a for ciklusban:
1 2 for (kif1; kif2; kif3): utasítás; ...; endfor; 3 |
Más nyelvekben van egy foreach szerkezet, hogy bejárjanak egy tömböt, vagy egy hash-t. A PHP3-ban nincs ilyen, de a PHP4-ben implementálták (lásd: foreach). PHP3-ban a while szerkezetet a list() és az each() függvényeket kombinálva használhatod erre a célra. Nézd meg e függvényeknek a dokumentációját, ha szeretnél példákat is látni.