★ wanayoo — archive 1999 http://www.php.net/manual/control-structures.do.while.phpNouvelle recherche | Portail wanayoo

PHP Home Page

Manual Table of Contents
Up to Control Structures
Quick Reference
German version of this pageJapanese version of this pageItalian version of this pageFrench version of this pageHungarian version of this page
Control Structures
* if
* else
* elseif
* Alternative syntax for control structures
* while
* do..while
* for
* foreach
* break
* continue
* switch
* require
* include
* require_once
* include_once
Manual: do..while
View the source code for this pageSearch the site



Previous page
 while
 Updated
Mon, 07 Aug 2000
for 
Next page


do..while

do..while loops are very similar to while loops, except the truth expression is checked at the end of each iteration instead of in the beginning. The main difference from regular while loops is that the first iteration of a do..while loop is guarenteed to run (the truth expression is only checked at the end of the iteration), whereas it's may not necessarily run with a regular while loop (the truth expression is checked at the beginning of each iteration, if it evaluates to FALSE right from the beginning, the loop execution would end immediately).

There is just one syntax for do..while loops:


$i = 0;
do {
   print $i;
} while ($i>0);
     

The above loop would run one time exactly, since after the first iteration, when truth expression is checked, it evaluates to FALSE ($i is not bigger than 0) and the loop execution ends.

Advanced C users may be familiar with a different usage of the do..while loop, to allow stopping execution in the middle of code blocks, by encapsulating them with do..while(0), and using the break statement. The following code fragment demonstrates this:


do {
    if ($i < 5) {
        print "i is not big enough";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
    print "i is ok";

     ...process i...

} while(0);
     

Don't worry if you don't understand this right away or at all. You can code scripts and even powerful scripts without using this `feature'.


User Contributed Notes: do..while


albertjiang@yahoo.com
19-Feb-2000 10:04
I think it should be
do {
....break;......
} while(1);

instead of do....while(0);



kris@mha.ca
28-Feb-2000 08:25
No, it should not be while(1)... That would be a forever loop. What is being demonstrated here is a way of doing a goto without the goto control structure...


leonardo97@geocities.com
18-May-2000 02:13
Either camp could be correct depending on what you wanted to do. If you are wanting to escape from some code which you are only intending on running once, <pre><code>
do{..break..}while(0)
</code></pre> or
<pre><code>
do{..continue..}while(0)
</code></pre> will suffice. If you want to create an infinite loop, and then exit when some condition is met, you would need to use do{..break..}while(1). <code>break</code> exits to the next statement after the loop, whereas <code>continue</code> skips the remainder of this iteration and jumps to the next iteration.



Of course in the latter case it would be much nicer to do a <pre><code>
do..while(condition)
</code></pre> since you are running a test (internal if) every loop anywyas.



 About Notes


Previous page
 while
 Updated
Mon, 07 Aug 2000
for 
Next page





Who's responsible for this?
Top of this page

Site
Hosting:



Located in
United States
Elements of this website are subject to copyright.
Questions about installing or using PHP should be directed to one of the mailing lists.
Only questions about the website should be directed to webmaster@php.net.