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