Что означает число после разрыва или продолжения в PHP?

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


person kn3l    schedule 02.03.2011    source источник


Ответы (4)


$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 во внутреннем цикле сломает оба.

person Your Common Sense    schedule 02.03.2011

Цифра просто говорит "из скольких прицелов нужно выпрыгнуть"

<?php
for($i = 0; $i < 10; ++$i) {
    for($j = 0; $j < 10; ++$j) {
        break 2;
    }
}

$i и $j будут равны 0

Чтобы процитировать руководство:

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

то же самое касается перерыва.

person edorian    schedule 02.03.2011
comment
Я предпочитаю ваш ответ просто потому, что он краток и по существу. - person n8jadams; 06.08.2019

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

Другие примеры continue

person Somnath Muluk    schedule 09.10.2012

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

перерыв (сущ.)

Выходим из обоих циклов, когда встречаем значение 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';
}

}

person Shakti Singh    schedule 02.03.2011