Я новичок в PHP и видел код ниже в Интернете. Она имеет continue 2
а также break
вместе в switch/case
заявление. Что это значит?
foreach ( $elements as &$element ) {
switch ($element['type']) {
case a :
if (condition1)
continue 2;
break;
case b :
if (condition2)
continue 2;
break;
}
// remaining code here, inside loop but outside switch statement
}
От PHP.net:continue:
Продолжить принимает необязательный числовой аргумент, который сообщает, сколько
Уровни замкнутых циклов следует пропустить до конца. По умолчанию
значение равно 1, таким образом, переход к концу токовой петли.
Если у вас есть переключатель внутри цикла и вы хотите перейти к следующему
итерация внешнего цикла, используйте продолжить 2.
PHP продолжает выполнять операторы до конца переключения
блок или первый раз, когда он видит оператор break. Если ты не пишешь
оператор break в конце списка операторов case, PHP пойдет
по исполнению заявления следующего дела.
Объяснение: continue 2
переходит к следующей итерации цикла на 2 уровня назад, который является foreach
, break
(эквивалентно break 1
) завершает текущий цикл, который является switch
,
По-английски: Для каждого $element
если тип «а» и condition1
встречается или если тип «б» и condition2
встречено, переходите к следующему $element
и игнорировать остальные параметры переключателя. В противном случае перейдите к следующему параметру переключения или, если это последний параметр переключения, выполните любой код после переключателя.
Вот демонстрация.
Извините, на данный момент viper-7.com не работает.
ИМХО, разница в том, если у вас есть код после переключателя и до конца цикла.
foreach ( $elements as &$element ) {
switch ($element['type']) {
case a :
if (condition1)
continue 2;
break;
case b :
if (condition2)
continue 2;
break;
}
// The code here will be reached if break but not if continue 2
}
Продолжение и разрыв похожи в том, что остановит что-то происходящее.
в случае продолжения он остановит что-либо после фигурных скобок, но не остановит цикл. Оператор switch просто выходит из этого оператора и переходит к следующему.
В случае разрыва он остановит продолжение всего цикла, завершит цикл там.
continue принимает необязательный числовой аргумент, который сообщает, сколько уровней замкнутых циклов следует пропустить до конца. Значение по умолчанию равно 1, что позволяет перейти к концу текущего цикла.
Источник: http://php.net/manual/en/control-structures.continue.php