tags:

views:

444

answers:

2

Hello Guys When reading a PHP book I wanted to try my own (continue) example. I made the following code but it doesn't work although everything seems to be ok

$num2 = 1;

    while ($num2 < 19)
     {
      if ($num2 == 15) { 
      continue; 
      } else {
      echo "Continue at 15 (".$num2.").<br />";
      $num2++;
      }

     }

The output is

Continue at 15 (1).
Continue at 15 (2).
Continue at 15 (3).
Continue at 15 (4).
Continue at 15 (5).
Continue at 15 (6).
Continue at 15 (7).
Continue at 15 (8).
Continue at 15 (9).
Continue at 15 (10).
Continue at 15 (11).
Continue at 15 (12).
Continue at 15 (13).
Continue at 15 (14).

Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/php/continueandbreak.php on line 20

Line 20 is that line

if ($num2 == 15) {

Would you please tell me what's wrong with my example ? I am sorry for such a Noob question

+9  A: 

if you don't increment $num2 before the continue you will get into an infinite loop;

$num2 = 0;

while ($num2 < 18)
    {
            $num2++;
            if ($num2 == 15) { 
              continue; 
            } else {
              echo "Continue at 15 (".$num2.").<br />";
            }


    }
Marek Karbarz
Your code will still infinite loop; `continue` starts the next iteration of the loop without executing what comes after the if-else clause.
Amber
wow, embarrassing
Marek Karbarz
Thanx a lot, that works pretty fine and I got the idea.
ta.abouzeid
A: 

You don't even need continue there, your code equivalent to;

$num2 = 1;

    while ($num2 < 19)
        {
                if ($num2 != 15) { 
                    echo "Continue at 15 (".$num2.").<br />";
                    $num2++;
                }

        }

If that's not what you're trying to achieve, you're using continue wrong.

Jeffrey Aylesworth
This achieves the same result: an infinite loop that will eventually time out.
jheddings