ID:               36523
 Updated by:       [EMAIL PROTECTED]
 Reported By:      rjnewton at efn dot org
-Status:           Open
+Status:           Bogus
 Bug Type:         Documentation problem
 Operating System: Windows XP
 PHP Version:      Irrelevant
 New Comment:


do { /* this code will be executed once */ } while (0);

I wonder where you saw that while(0) will produce an endless loop until
break;. 

Using a do-while(0) allows you to break it at the middle of the block,
that's all.

anyway: "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'."


Previous Comments:
------------------------------------------------------------------------

[2006-02-25 03:01:26] rjnewton at efn dot org

Documentation reference should have been Language Reference|Control
Structures|do-while rather than Language
Reference|Control Structures|while.

Also, "thus $ < 5 will evaluate true." Should have been "thus $i < 5
will evaluate true." in the Expected Results section.
Sorry,

Joseph

------------------------------------------------------------------------

[2006-02-25 02:48:44] rjnewton at efn dot org

Description:
------------
Current PHP manual [Tue Nov 22 00:57:49 2005] suggests under Language
Reference|Control Structures|while that while(0) keeps a loop in play
until a break condition occurs.  This is the reverse of the actual
case.

Reproduce code:
---------------
<?php
$i = 12;
$factor = 0.5;
$minimum_limit = 2;
do {
    if ($i < 5) {
        echo "i is not big enough\n";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
   echo "i is ok\n";

    /* process i */

} while (0);
?> 

Expected result:
----------------
Should make two full passes through the loop, the exit at the first if
statement of the third loop, since $i will then be 3, thus $ < 5 will
evaluate true.  This is the behavior when while(1) is used as the
control condition.



Actual result:
--------------
using while(0):
D:\newtonj\PHPstuff>php hello.php
i is ok


using while(1):
D:\newtonj\PHPstuff>php hello.php
i is ok
i is ok
i is not big enough




------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=36523&edit=1

Reply via email to