Ответ 1
В случае 2 вложенных циклов:
break 2;
Я ищу, чтобы разбить внешний для /foreach цикл в PHP.
Это можно сделать в ActionScript следующим образом:
top : for each(var i:MovieClip in movieClipArray)
{
for each(var j:String in nameArray)
{
if(i.name == j) break top;
}
}
Что такое эквивалент PHP?
В случае 2 вложенных циклов:
break 2;
Руководство по PHP говорит
break принимает необязательный числовой аргумент, который говорит ему, сколько вложенные ограждающие структуры должны быть разбился.
break 2;
Вы можете использовать только оператор break-n:
foreach(...)
{
foreach(...)
{
if (i.name == j)
break 2; //Breaks 2 levels, so breaks outermost foreach
}
}
Если вы используете php> = 5.3, вы можете использовать метки и goto
, как в ActionScript:
foreach (...)
{
foreach (...)
{
if (i.name == j)
goto top;
}
}
top:
Но goto
нужно использовать осторожно. Гото это зло (считается плохой практикой)
Вы можете использовать break 2;
для разрыва двух циклов одновременно. Это не совсем так, как ваш пример с "названными" циклами, но он будет делать трюк.
$i = new MovieClip();
foreach ($movieClipArray as $i)
{
$nameArray = array();
foreach ($nameArray as $n)
if ($i->name == $n)
break 2;
}
Использовать goto?
for ($i = 0, $j = 50; $i < 100; $i++)
{
while ($j--)
{
if ($j == 17)
goto end;
}
}
echo "i = $i";
end:
echo 'j hit 17';