A do..while ciklusok nagyon hasonlóak a while ciklusokhoz, a különbség mindössze annyi, hogy a kifejezés igaz volta itt az iteráció végén értékelődik ki, és nem az elején. A fő különbség a hagyományos while ciklushoz képest, hogy a do..while ciklus első iterációja garantáltan lefut (a kifejezés igazságértéke csak az iteráció végén ellenőrződik), ami nem garantált a hagyományos while ciklusnál (itt a kifejezés igazságértéke az iteráció kezdetén értékelődik ki, ha értéke FALSE kezdetben, a ciklus végrehajtása azonnal befejeződik).
Csak egy szintaxisa van a do..while ciklusnak:
1
2
3 $i = 0;
4 do {
5 print $i;
6 } while ($i>0);
7
8 |
A fenti ciklus pontosan egyszer fut le, mert az első iteráció után, amikor a kifejezés igazságértéke vizsgálatra kerül, kiderül, hogy FALSE ($i nem nagyobb, mint 0) és a ciklus végrehajtása befejeződik.
Haladó C programozók már bizonyára jártasak a do..while ciklus másfajta használatában. Például utasításblokk közepén ki lehet lépni a blokkból, ha az utasításblokkot do..while(0), közé tesszük, és break utasítást használunk. A következő kódrészlet ezt szemlélteti:
1
2
3 do {
4 if ($i < 5) {
5 print "i nem elég nagy";
6 break;
7 }
8 $i *= $factor;
9 if ($i < $minimum_limit) {
10 break;
11 }
12 print" i most jó";
13
14 ...i feldolgozása...
15
16 } while(0);
17
18 |
Ne aggódj, ha nem érted ezt azonnal, vagy ha egyáltalán nem érted. Írhatsz scripteket, sőt hatékony scripteket ennek a 'feature'-nek a használata nélkül is. [én például most láttam először].