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:

  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      

Remélem így már érthetőbb lesz az alábbi magyarázat].

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.