Что означает число после "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';
}
}