[PHP-DEV] PHP 4.0 Bug #8428 Updated: continue doesn't pass thru a switch statement From: zak <email protected>
Date: 01/05/01

ID: 8428
Updated by: zak
Reported By: ocomte <email protected>
Old-Status: Bogus
Status: Open
Old-Bug Type: Unknown/Other Function
Bug Type: Feature/Change Request
Assigned To:
Comments:

The desired behavior is that continue is transparent to switch statements - this behavior would mimic how if handles continue statements.

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

[2001-01-05 22:33:45] zak <email protected>
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=$zn";
        }
        echo "$i=$in";
    }
    
    /*
        Should output:
            $i=0
            $i=1
            $i=2
            $i=3
            $i=4
    */
?>

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

[2000-12-26 13:34:59] ocomte <email protected>
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.

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

Full Bug description available at: http://bugs.php.net/?id=8428

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: php-dev-unsubscribe <email protected>
For additional commands, e-mail: php-dev-help <email protected>
To contact the list administrators, e-mail: php-list-admin <email protected>