Досрочный выход, остановка цикла в PHP
Блог / PHP / Досрочный выход, остановка цикла в PHP
Досрочно закончить исполнение цикла в PHP можно разными способами. Хотя конструкций циклов в PHP много, но принципы одинаковые. Для примера будем использовать цикл for.
<?php for ($k=0; $k < 10; $k++) { echo «$k/»; if ($k == 5) break; } //увидим : 0/1/2/3/4/5/ ?>
1 2 3 4 5 6 7 |
<?php for ($k=0; $k < 10; $k++) { echo «$k/»; if ($k == 5) break; } //увидим : 0/1/2/3/4/5/ ?> |
Цикл досрочно завершится с помощью оператора break после вывода пятерки. Для прерывания вложенных циклов, оператору break нужно сообщить кол-во вложений. В следующем примере мы прерываем вложенность из двух циклов.
<?php for ($j=0; $j < 3; $j++) for ($k=0; $k < 10; $k++) { echo «$j-$k/»; if ($k == 5) break 2; } //увидим : 0-0/0-1/0-2/0-3/0-4/0-5/ ?>
1 2 3 4 5 6 7 8 |
<?php for ($j=0; $j < 3; $j++) for ($k=0; $k < 10; $k++) { echo «$j-$k/»; if ($k == 5) break 2; } //увидим : 0-0/0-1/0-2/0-3/0-4/0-5/ ?> |
Прерывание цикла с помощью оператора goto
В php с 5й версии появляется оператор goto. Природа оператора goto естественна сама по себе, так как это один из базовых операторов на языке ассемблера, но некоторые специалисты и «философы от программирования» заявляют о недопустимости использования оператора прямого безусловного перехода в процедурных языках, т.
Изменим код предыдущего примера, используя goto:
<?php for ($j=0; $j < 3; $j++) for ($k=0; $k < 10; $k++) { echo «$j-$k/»; if ($k == 5) goto exit_circle_point; } exit_circle_point: //увидим : 0-0/0-1/0-2/0-3/0-4/0-5/ ?>
1 2 3 4 5 6 7 8 9 |
<?php for ($j=0; $j < 3; $j++) for ($k=0; $k < 10; $k++) { echo «$j-$k/»; if ($k == 5) goto exit_circle_point; } exit_circle_point: //увидим : 0-0/0-1/0-2/0-3/0-4/0-5/ ?> |
Результат будет аналогичен.
Goto имеет ряд ограничений по применению, с ними лучше всего ознакомиться в мануале по PHP.
Написать комментарий
Комментарии к «Досрочный выход, остановка цикла в PHP»
Понравилась статья? Есть вопросы? — пишите в комментариях.
2.2.9.4. Частные случаи использования цикла for в php
Рассмотрение возможных модификаций оператора цикла вынесено в отдельный раздел, так как их использование требует применения особых операторов, в частности break и continue.
1. Каждое из выражений 1-3 может быть пустым.
Если выражение 2 является пустым, то это означает, что цикл должен выполняться неопределённое время, так как в этом случае PHP считает это выражение всегда истинным. Иногда это бывает полезно.
В этом случае выйти из цикла можно с помощью оператора break.
Оператор break досрочно (то есть, без проверки стандартного условия выхода из цикла) прерывает выполнение любого оператора цикла (а не только оператора for). Естественно, что для этого потребуется использование какого-либо другого условия. Таким образом, цикл становится более гибким. Оператор break передаёт управление первой следующей за телом цикла строке (Пример 2 -33).
Пример 2‑33
<?php
for ($i=0; ; $i++)
{
if ($i>=10) break;
// если $i больше или равно 10, то прекращаем работу цикла
if ($i % 2 == 0) echo «\$i = $i <br>»;
// если число четное, то печатаем его
}
echo «Выход из цикла по оператору break»;
$x = 5;
echo » Начальное значение \$x перед входом в цикл равно $x <br>»;
for (; ; $x += 2)
{
if ($x == 15)
break; // Выйти из цикла for;
}
echo «Выход из цикла по оператору break <br>»;
//Вариант альтернативно1 формы оператора
$x = 7;
echo » Начальное значение \$x перед входом в цикл равно $x <br>»;
for (; ; $x +=2) :
echo «\$x = $x <br>»;
if ($x == 17) :
break; //Выйти из цикла for
endif;
endfor;
echo «Выход из цикла по оператору break <br>»
2. Приращение переменной цикла может осуществляться в зависимости от некоторого условия, определяемого в цикле. В этом случае приращение не должно указываться в управляющем выражении. Ниже приводится пример, в котором все выражения (в том числе и выражение приращения) являются пустыми (Пример 2 -34).
Пример 2‑34
<?php
//Печать чётных чисел в примере с пустыми выражениями в операторе for
$i=2; //задаем начальное значение счетчика
for ( ; ; )
{
if ($i>=10) break;
//если $i больше или равно 10 то прекращаем работу цикла
if ($i % 2 == 0) echo «\$i = $i <br>»;
//если число четное, увеличиваем счетчик на единицу
$i++;
}
?>
3. Использование оператора continue в операторах цикла.
Наконец, в операторе for предусмотрена возможность досрочного (то есть, без выполнения всех команд цикла) перехода к началу цикла (к первой строке цикла, содержащей управляющие выражения). Его применение продемонстрировано в примере Пример 2 -35.
Пример 2‑35
<?php
echo ‘Использование оператора continue’,»<br>»;
$value = 1;
for ($value = -2; $value < 3; $value++)
{
if($value == 0)
{
continue;
}
echo «1 / $value = «, 1/$value, «<br>»;
}
?>
В этом примере выводятся на экран числа, обратные к счётчику цикла. Для предотвращения деления на ноль, что вызвало бы сообщение о математической ошибке, с помощью оператора
Цикл FOREACH (Цикл ДЛЯ КАЖДОГО)
Конструкция foreach представляет собой разновидность for, включенную в язык для упрощения перебора элементов массива. Существуют две разновидности команды foreach, предназначенные для разных типов массивов:
Первая форма:
foreach (массив as Имя_Переменной1)
{
Итерационный блок
Вторая форма:
foreach (массив as Имя_Переменной2 => Имя_Переменной1)
{
Итерационный блок
}
Итерационные блоки – это совокупность операторов, для которых в каждой итерации будут определены значения соответствующие номеру итерации:
В приводимом ниже примере (Пример 2-17), переменная 1 с именем $value используется для вывода элементов массива $arr на печать в первой форме оператора foreach.
Массивы состоят из отдельных элементов, и цикл foreach используется для перебора всех элементов массива
Использование оператора break в PHP
В этом руководстве мы покажем вам, как использовать оператор break в PHP.
Оператор break позволяет вам управлять потоком циклов и оператором switch в PHP.
Этот оператор позволяет остановить выполнение текущего цикла или структуры переключения. Это позволяет вам прервать и продолжить выполнение скрипта.
Например, если вы найдете нужные данные в цикле, вы можете выйти из него, не дожидаясь завершения цикла.
Его можно использовать вместе с оператором continue в PHP, который позволяет пропустить текущую итерацию цикла.
Оператор break работает со всеми циклами, поддерживаемыми в PHP, включая циклы for, foreach, while и do-while.
В следующем разделе мы покажем вам, как использовать оператор break в вашем PHP-коде.
Синтаксис оператора break в PHP
Давайте начнем с изучения того, как именно оператор break написан в PHP и какие дополнительные функции он поддерживает.
При самом простом использовании все, что вам нужно сделать, это использовать « break
», за которым следует точка с запятой (;
). Однако PHP позволяет вам выйти за пределы нескольких уровней.
Указав уровень, можно выйти из вложенного цикла. Это полезно, когда вы сталкиваетесь с ситуацией, когда вам нужно остановить не только текущий цикл. Вскоре мы подробно рассмотрим, как это работает.
Если уровень не установлен, значением по умолчанию будет « 1
», что является непосредственным циклом или структурой.
Ниже вы можете увидеть, как инструкция break написана на PHP вместе с необязательным полем уровня.
В приведенном ниже примере вы можете увидеть, как написать оператор break в цикле while.
Кроме того, вы можете увидеть, как записывается параметр уровня, когда вы хотите выйти из родительского и вложенного циклов.
Пример использования оператора break в PHP
Теперь, когда мы показали вам, что оператор break написан на PHP, мы рассмотрим его в нескольких примерах кода.
Мы покажем оператор break только в циклах for и while, так как он работает одинаково со всеми другими типами циклов.
Использование оператора break в цикле for в PHP
В этом первом примере покажем, как оператор break используется в цикле for в PHP.
Здесь у нас есть простой цикл for, который будет считать вверх от 0 до 9, увеличиваясь на единицу в каждом цикле.
Мы используем условный оператор if в этом цикле, чтобы проверить, соответствует ли наш « $i
” переменная идентична 5
. Если значение равно 5
, тогда PHP выполнит оператор break, выйдя из цикла.
В противном случае значение, хранящееся в нашей переменной « $i
», будет напечатано с помощью инструкции PHP echo.
Выполнив приведенный выше код, вы увидите, что наш оператор break остановил цикл, как только « $i
» стало равным 5
.
Как использовать инструкцию break в цикле while
Использование оператора break в цикле while в PHP такое же, как и в цикле for. Мы напишем бесконечный цикл while, который увеличивает счетчик в каждом цикле, чтобы продемонстрировать это.
Поскольку это бесконечный цикл, единственный способ выйти из него — использовать оператор break.
В этом цикле мы увеличиваем значение переменной « $counter
» на единицу в каждом цикле.
Затем мы проверяем, является ли значение « $counter
» на больше 5. PHP выполнит оператор break, если значение больше для выхода из цикла.
В конце каждого цикла мы выводим число, хранящееся в данный момент в переменной « $counter
».
Ниже приведен результат, который вы получите после запуска приведенного выше PHP-кода. Вы можете видеть, что мы прервали цикл while, как только « $counter
» стало больше, чем ( >
) 5
, благодаря оператору break в PHP.
Выход из вложенного цикла в PHP
Теперь, когда мы знаем, как работает PHP-оператор break при использовании в одном цикле, давайте рассмотрим вложенные циклы.
Цикл считается вложенным, если он выполняется внутри другого цикла. PHP позволяет вам использовать оператор break для выхода из текущего цикла и любого цикла выше него.
Это работает, используя « break
», за которым следует количество уровней, из которых вы хотите выйти. В приведенном ниже примере вы можете видеть, что наш оператор break равен два уровня в , поэтому мы можем использовать « break 2
“
Этот цикл завершится, как только значение “ $x
” плюс “ $y
” станет идентичным.
Приведенный выше код выдаст следующий результат. С этим результатом вы можете видеть, как PHP-оператор break выводит код из обоих уровней циклов.
Использование оператора break в структуре switch
Оператор break в PHP также имеет решающее значение для структуры switch, поскольку он позволяет выйти из switch, не переходя к следующему case.
Хотя мы не будем здесь подробно объяснять структуру переключателя, мы быстро напишем пример.
В этом примере мы создадим переменную с именем « $number
», которой будет присвоен номер 2
. Затем это значение передается в нашу структуру переключателя.
При передаче этого значения переключатель перейдет к соответствующему « case
». В этом примере это означает, что он перейдет к « case 2»
.
Поскольку мы не используем разрыв в « case 2
” PHP провалится до следующего блока. В этом примере вы получите текст « Number is 2
» и « Number is 3
».
Если вы не используете « break
», PHP продолжит переход к следующему case до тех пор, пока не завершится выполнение структуры switch.
Ниже вы можете увидеть, как оператор switch полагается на оператор PHP « break
», чтобы выйти из структуры. Без него PHP провалится до следующего случая, как показано ниже.
Заключение
В этом руководстве мы показали вам, как оператор break используется в PHP. Крайне важно контролировать поток циклов, поскольку это позволяет вам вырваться из них раньше.
Кроме того, оператор break также имеет решающее значение для эффективного использования структуры case в PHP. Использование break внутри этой структуры позволяет предотвратить ее переход к следующему case.
Пожалуйста, прокомментируйте ниже, если у вас есть какие-либо вопросы об использовании break в вашем PHP-скрипте.
Вам также следует ознакомиться со многими другими руководствами по PHP, чтобы узнать больше. У нас также есть различные другие руководства по кодированию, если вы хотите изучить новые языки программирования.
Ключевые слова специального цикла — Взлом с помощью PHP
Ключевые слова специального цикла — Взлом с помощью PHP — Практический PHPКлючевые слова специального контура
Взлом с помощью PHP был обновлен для PHP 7 — всего 20 долларов! >>
Есть два специальных ключевых слова, которые вы можете использовать с циклами: «перерыв» и «продолжение». Мы уже использовали break ранее, когда рассматривали переключение case — здесь он используется для выхода из блока switch/case и имеет тот же эффект с циклами. При использовании внутри циклов для управления поведением цикла: break заставляет PHP выйти из цикла и продолжить сразу после него, а continue заставляет PHP пропустить оставшуюся часть текущей итерации цикла и перейти к следующей.
Например:
Это модифицированная версия нашего исходного сценария цикла for. На этот раз вывод такой:
Номер 1
Номер 2
Номер 4
Номер 5
Номер 6
Обратите внимание, что номер 3 полностью пропущен, и сценарий завершается после номера 6. Причина этого в двух операторах if: если текущий номер равен 3, используется «продолжить», чтобы пропустить оставшуюся часть этой итерации и перейти к номеру 4. Кроме того, если число равно 7, «break» используется для полного выхода из цикла.
Хотите изучить PHP 7?
Hacking with PHP полностью обновлен для PHP 7 и теперь доступен в виде загружаемого PDF-файла.