Подтвердить что ты не робот

Выломите forloop, но в инструкции switch php

Когда я обычно хочу вырваться из цикла 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;
}

Это лучшее решение? или это там другим способом?

4b9b3361

Ответ 1

из руководства (break)

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

Ответ 2

break 2;

break x выйдет из этого множества уровней

Ответ 3

В принятом ответе нет практического примера, позвольте мне поделиться с вами.

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;
    }
}

Ответ 4

Просто используйте {- он будет держать код "запущенным". Гораздо лучше, чем выражение о прорыве, если вы спросите меня.