Marty
Marty

Reputation: 39458

How can I break an outer loop with PHP?

I am looking to break an outer for/foreach loop in PHP.

This can be done in ActionScript like so:

top : for each(var i:MovieClip in movieClipArray)
{
    for each(var j:String in nameArray)
    {
        if(i.name == j) break top;
    }
}

What's the PHP equivalent?

Upvotes: 154

Views: 78515

Answers (6)

pabdulin
pabdulin

Reputation: 35219

Use goto?

for ($i = 0, $j = 50; $i < 100; $i++) 
{
  while ($j--) 
  {
    if ($j == 17) 
      goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';

Upvotes: 6

Jordan Arsenault
Jordan Arsenault

Reputation: 7388

$i = new MovieClip();
foreach ($movieClipArray as $i)
{
    $nameArray = array();
    foreach ($nameArray as $n) 
        if ($i->name == $n) 
            break 2;
}

Upvotes: 11

Edgar Villegas Alvarado
Edgar Villegas Alvarado

Reputation: 18344

You can using just a break-n statement:

foreach(...)
{
    foreach(...)
    {
        if (i.name == j) 
            break 2; //Breaks 2 levels, so breaks outermost foreach
    }
}

If you're in php >= 5.3, you can use labels and gotos, similar as in ActionScript:

foreach (...)
{        
    foreach (...)
    {
        if (i.name == j) 
            goto top;
    }
}
top:

But goto must be used carefully. Goto is evil (considered bad practice)

Upvotes: 24

lucian303
lucian303

Reputation: 3602

In the case of 2 nested loops:

break 2;

http://php.net/manual/en/control-structures.break.php

Upvotes: 327

Shakti Singh
Shakti Singh

Reputation: 86346

PHP Manual says

break accepts an optional numeric argument which tells it how many nested enclosing structures are to be broken out of.

break 2;

Upvotes: 47

Jon
Jon

Reputation: 437336

You can use break 2; to break out of two loops at the same time. It's not quite the same as your example with the "named" loops, but it will do the trick.

Upvotes: 14

Related Questions