Reputation: 39458
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
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
Reputation: 7388
$i = new MovieClip();
foreach ($movieClipArray as $i)
{
$nameArray = array();
foreach ($nameArray as $n)
if ($i->name == $n)
break 2;
}
Upvotes: 11
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 goto
s, 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
Reputation: 3602
In the case of 2 nested loops:
break 2;
http://php.net/manual/en/control-structures.break.php
Upvotes: 327
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
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