Может ли кто-нибудь объяснить, с примерами, что подразумевается под циклом break 2
или continue 2
в PHP? Что это значит, когда break
или continue
следует число?
Что означает число после "break" или "continue" в PHP?
Ответ 1
$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
применим только для циклов, тогда как break
может использоваться в других операторах, таких как switch
.
Число представляет количество зависимых вложенных.
если есть 2 вложенных цикла, break
во внутреннем сломает внутреннюю внутреннюю (однако это имеет мало смысла, поскольку внутренний цикл будет запущен снова в следующей итерации внешнего цикла). break 2
во внутреннем цикле будет разорвать оба.
Ответ 2
Число просто говорит "сколько областей выпрыгнуть из"
<?php
for($i = 0; $i < 10; ++$i) {
for($j = 0; $j < 10; ++$j) {
break 2;
}
}
$i и $j будет 0
Чтобы процитировать руководство:
continue принимает необязательный числовой аргумент, который сообщает ему, сколько уровней охватывающих циклов он должен пропустить до конца.
то же самое для разрыва.
Ответ 3
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";
}
?>
Ответ 4
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 в $array;
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';
}
}