Может ли кто-нибудь объяснить на примерах, что означает цикл break 2
или continue 2
в PHP? Что означает, когда за break
или continue
следует число?
Что означает число после разрыва или продолжения в PHP?
Ответы (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
во внутреннем цикле сломает оба.
Цифра просто говорит "из скольких прицелов нужно выпрыгнуть"
<?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;
}
}
перерыв (сущ.)
Выходим из обоих циклов, когда встречаем значение 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';
}
}