Edit report at http://bugs.php.net/bug.php?id=8428&edit=1
ID: 8428 Updated by: j...@php.net Reported by: ocomte at guarantycity dot com Summary: continue doesn't pass thru a switch statement -Status: Open +Status: Wont fix Type: Feature/Change Request -Package: Feature/Change Request +Package: *General Issues Operating System: Solaris 7 PHP Version: 4.0.3pl1 Block user comment: N Private report: N New Comment: You need to pass the level here: <?php for($i=0; $i<5; ++$i) { switch(1) { case 1: continue 2; } echo "Not printable"; } ?> This code won't output anything. Documented issue also. Previous Comments: ------------------------------------------------------------------------ [2001-01-05 23:04:15] z...@php.net The desired behavior is that continue is transparent to switch statements - this behavior would mimic how if handles continue statements. ------------------------------------------------------------------------ [2001-01-05 22:33:45] z...@php.net The switch statement is a flow control construct - like for or if. Because of this continue behaves within switch like it should in any flow control contruct - it skips to the next loop of the construct. However, switch does not loop - so continue behaves like break. If you would like to use a continue embedded in a switch statement to continue past a loop in an outside control construct, specify how many levels you would like continue to break out of. Try these examples to see what I mean: <pre> <?php for ($i=0; $i<5; ++$i) { switch(1) { case 1: continue 2; break; } echo "Should be skipped"; } // Should not output anything for ($i=0; $i<5; ++$i) { for ($z=10; $z>5; --$z) { switch(1) { case 1: continue 2; break; } echo "\$z=$z\n"; } echo "\$i=$i\n"; } /* Should output: $i=0 $i=1 $i=2 $i=3 $i=4 */ ?> ------------------------------------------------------------------------ [2000-12-26 13:34:59] ocomte at guarantycity dot com in the script : <? for($i=0; $i<5; ++$i) { switch(1) { case 1: continue; } echo "Not printable"; } ?> the string is printed 5 times because the continue statement end the switch (like break). In C and C++, and in the PHP manual the continue (unlike break) isn't affected by surrounding switch statement and it seems logical to me. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=8428&edit=1