Ответ 1
из руководства (break)
break принимает необязательный числовой аргумент, который сообщает ему, сколько из вложенных структур размещения должно быть разбито.
Когда я обычно хочу вырваться из цикла foreach, прежде чем все итерации закончатся, я просто использую оператор break;. например.
foreach($nodelist as $node) {
if($metCriteria) {
break;
}
}
Но мой следующий пример содержит оператор switch. И если выполнено одно из условий, мне нужно выйти из цикла foreach. (Проблема, связанная с разрывом, используется для оператора switch)
foreach($nodelist as $node)
{
switch($node->nodeName) {
case "a" :
//do something
break;
case "b" :
//break out of forloop
break;
}
}
Я просто устанавливаю переменную в инструкции switch, а затем ломаю ее после? например.
$breakout = false;
foreach($nodelist as $node)
{
switch($node->nodeName) {
case "a" :
//do something
break;
case "b" :
$breakout = true;
break;
}
if($breakout === true) break;
}
Это лучшее решение? или это там другим способом?
из руководства (break)
break принимает необязательный числовой аргумент, который сообщает ему, сколько из вложенных структур размещения должно быть разбито.
break 2;
break x выйдет из этого множества уровней
В принятом ответе нет практического примера, позвольте мне поделиться с вами.
break 2
означает выход из цикла и коммутатора.
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
Просто используйте {- он будет держать код "запущенным". Гораздо лучше, чем выражение о прорыве, если вы спросите меня.