|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2000-12-26 13:34 UTC] 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.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 18:00:01 2025 UTC |
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 */ ?>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.