Что означает число после "break" или "continue" в PHP?

Может ли кто-нибудь объяснить, с примерами, что подразумевается под циклом break 2 или continue 2 в PHP? Что это значит, когда break или continue следует число?

Ответ 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;
    }
}
?>

Дополнительные примеры 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';
}

}