Как я могу нарушить внешний цикл с PHP?

Я ищу, чтобы разбить внешний для /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

Руководство по PHP говорит

break принимает необязательный числовой аргумент, который говорит ему, сколько вложенные ограждающие структуры должны быть разбился.

break 2;

Ответ 3

Вы можете использовать только оператор 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 нужно использовать осторожно. Гото это зло (считается плохой практикой)

Ответ 4

Вы можете использовать break 2; для разрыва двух циклов одновременно. Это не совсем так, как ваш пример с "названными" циклами, но он будет делать трюк.

Ответ 5

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

Ответ 6

Использовать goto?

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