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