Может ли кто-нибудь объяснить, с примерами, что подразумевается под break 2
цикла break 2
или continue 2
в PHP? Что это означает, что после break
или continue
следует число?
$array = array(1,2,3); foreach ($array as $item){ if ($item == 2) { break; } echo $item; }
выходы «1», потому что цикл был сломан навсегда, пока эхо не смогло напечатать «2».
$array = array(1,2,3); foreach ($array as $item){ if ($item == 2) { continue; } echo $item; }
выходы 13
потому что вторая итерация прошла
$numbers = array(1,2,3); $letters = array("A","B","C"); foreach ($numbers as $num){ foreach ($letters as $char){ if ($char == "C") { break 2; // if this was break, o/p will be AB1AB2AB3 } echo $char; } echo $num; }
выдает AB
из-за break 2
, что означает, что оба утверждения были сломаны довольно рано. Если бы это был просто break
, выход был бы AB1AB2AB3
.
$numbers = array(1,2,3); $letters = array("A","B","C"); foreach ($numbers as $num){ foreach ($letters as $char){ if ($char == "C") { continue 2; } echo $char; } echo $num; }
выведет ABABAB
, из-за continue 2
: внешний цикл будет передаваться каждый раз.
Другими словами, continue
останавливает текущее выполнение итерации, но позволяет другому запускаться, а break
останавливает весь оператор.
Таким образом, мы можем continue
что continue
применимо только для петель, тогда как break
может использоваться в других операторах, таких как switch
.
Число представляет количество затронутых вложенных операторов.
если есть 2 вложенных цикла, break
во внутреннем сломает внутреннюю (однако это имеет мало смысла, поскольку внутренний цикл будет запущен снова в следующей итерации внешнего цикла). break 2
во внутреннем цикле сломает оба.
Число просто говорит «сколько областей выпрыгнуть из»
<?php for($i = 0; $i < 10; ++$i) { for($j = 0; $j < 10; ++$j) { break 2; } }
$ i и $ j будут равны 0
Чтобы процитировать руководство:
continue принимает необязательный числовой аргумент, который сообщает ему, сколько уровней замкнутых циклов он должен пропустить до конца.
то же самое касается разрыва.
break принимает необязательный числовой аргумент, который сообщает ему, сколько из вложенных структур размещения должно быть разбито.
<?php $arr = array('one', 'two', 'three', 'four', 'stop', 'five'); while (list(, $val) = each($arr)) { if ($val == 'stop') { break; /* You could also write 'break 1;' here. */ } echo "$val<br />\n"; } /* Using the optional argument. */ $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; } } ?>
Дополнительные примеры перерыва
continue принимает необязательный числовой аргумент, который сообщает ему, сколько уровней замкнутых циклов он должен пропустить до конца. Значение по умолчанию равно 1, таким образом пропуская до конца текущего цикла.
<?php while (list($key, $value) = each($arr)) { if (!($key % 2)) { // skip odd members continue; } do_something_odd($value); } $i = 0; while ($i++ < 5) { echo "Outer<br />\n"; while (1) { echo "Middle<br />\n"; while (1) { echo "Inner<br />\n"; continue 3; } echo "This never gets output.<br />\n"; } echo "Neither does this.<br />\n"; } ?>
Дополнительные примеры продолжения
break: разбить внутреннюю петлю (выход из цикла)
break 2: разбить 2 петли уровня вложенности (выход из 2 вложенных циклов)
continue: принудительная петля для следующей итерации с того места, где она используется, без выполнения кода останова цикла
continue 2: принудительный цикл для следующих 2-х итераций с того места, где он используется, без выполнения кода останова цикла
выйдите из цикла, когда мы встретим значение $array
равное 5
break $array(4,5,8); for ($i=0 ;$i < 10 $i ++) { if ($array[$i]==5) { break; } }
break (n)
Выйдите из обоих циклов, когда мы встретим значение 5 в массиве $;
for ($i=0 ;$i < 10 $i ++) { for($j=0; $j <10; $j++) { if ($array[$i][$j]==5) { break 2; } } }
Продолжать
Распечатает сообщение, когда значение равно 5;
for($i=0; $i<10; $i++) { if ($array[$i] != 5) { continue;// will reach at the first line from here which is for($i=0;..... } echo 'This is five'; }
}