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].