2012. január 12., csütörtök

PHP - ciklusok

Sokszor akad olyan helyzet, amikor valamit addig kell csinálnunk, amíg valamilyen feltétel teljesül. Ehhez a ciklusok vannak a segítségünkre.
Mint már mondtam, a ciklus arra való, hogy valamit addig csinál, amíg a feltétele teljesül.
A PHP-ban négy féle ciklusról beszélünk.

  • while - elöltesztelő
  • do-while - hátultesztelő
  • for - elöltesztelő
  • foreach - részletesen majd egy későbbi leckében
Mennyünk is végig sorjában.

WHILE
A while egy elöltesztelő ciklus. Nézzük meg a forgatókönyvét.

ELLENŐRZÖM, hogy a feltétel igaz-e
HA IGAZ LEFUTTATOM a kódot
ELLENŐRZÖM, hogy a feltétel igaz-e
HA IGAZ LEFUTTATOM a kódot
...

Tehát már azelőtt ellenőrzöm, hogy az ismétlendő kód egyszer lefutna. Ez azt jelenti, hogy nem biztos, hogy a kódunk egyáltalán lefut. Példa rá:

$x = 1;
while($x<5)
{
   echo 'Kisebb, mint 5<br/>';
   $x++;
}

Mit csinál a program?
Létrehoz egy x változót 1 értékkel. 
A while feltételében ellenőrzi, hogy kisebb-e, mint az egy.
Mivel kisebb, kiírja, hogy "Kisebb, mint 5".
Majd az x++ segítségével növeli az x értékét eggyel. 
Ismét visszatér a while feltételéhez, s ellenőrzi, hogy kisebb-e, mint 5. 
Mivel kisebb, kiírja, hogy "Kisebb, mint 5".
... egészen addig, amíg az x értéke 5-nél kisebb (tehát 4)

DO-WHILE

A while egy elöltesztelő ciklus. Nézzük meg a forgatókönyvét:

LEFUTTATOM a kódot
ELLENŐRZÖM, hogy a feltétel igaz-e
HA IGAZ LEFUTTATOM a kódot
...

Tehát lefuttatom a kódot és csak utánna ellenőrzöm. A kód legalább egyszer biztosan lefut. Példa:

$x = 1;
do{
  echo 'Kisebb, mint 5<br/>';
 $ x++;
}while($x<5);

Mit csinál a program?
Létrehoz egy x változót, aminek az értéke 1.
Belép a ciklusba (a do-val jelzem a ciklus kezdetét)
Kiírja, hogy kisebb, mint 5. (hiszen az 1 kisebb, mint 5), az x-et pedig eggyel növeli.
A feltételben ellenőrzi, hogy x kisebb-e, mint 5.
Ha igen, akkor kiírja, hogy kisebb, mint 5...
Egészen addig, amíg az x értéke nem lesz 5. 

FOR ciklus
A for cíklus valójában egy "átalakított" while ciklus. A while ciklus esetében nem mindig tudjuk, hogy pontosan hányszor fog lefutni a kód. Erre való a for ciklus. Nézzük meg, hogy néz ki a for ciklus "feltétele":

for($i = 0; $i< 5; $i++)
{
}

Először létrehozok egy i nevű változót 0 értékkel. (int i  = 0). Utána pontosvesszővel jelzem, hogy ennyi volt ez a rész. 
A következő lépésben megadom a feltételt. Olyan, mint amit a while és do-while ciklusoknál is használtunk. A ciklus addig fut, amíg az i értéke kisebb, mint 5. (i<5) Majd megint pontosvesszőt használok.
Legvégül pedig megmondom a ciklusnak, hogy mit csináljon az i-vel, amikor a fordító ideér. Ez esetben az i-t növeli eggyel. Nézzük meg kódban (figyeljük meg, mennyivel egyszerűbb a forral, mint a while-lal)

while:

$i = 0;
while($i<5)
{
   echo 'Kisebb, mint 5 <br/>';
   $i++;
}

for: 

for($i = 0; $i<5;$i++)
{
   echo 'Kisebb, mint 5<br/>';
}

Ha nem érthető, kérlek írj megjegyzést, vagy emailt.

A FOREACH ciklussal majd akkor foglalkozunk, amikor már ismerjük a tömböket.


3 megjegyzés:

  1. bocs hogy beleszólok de a while-nél kihagytál a x++; előtt egy $ jelet.

    VálaszTörlés
  2. Heló Mátyás!
    Azt nem tudod esetleg, hogy jeleníthetek meg képeket for ciklus segítségével ?

    VálaszTörlés