Продолжение цикла и выход из него. Циклы в PHP

Прочие модели 16.06.2019

Очень часто при написании скриптов требуется выполнить одно и тоже действие несколько раз. Для этого и нужны циклы. Циклы в php , как и в других языках, делятся на несколько типов:

  1. Цикл со счетчиком for
  2. Цикл с условием while, do-while
  3. Цикл для обхода массивов foreach

Например, при создании интернет магазина , нам нужно до вывода товаров на экран, убрать товары, остаток на складе которых ниже 10. Для этого мы в цикле обходим массив с товарами, и при помощи условного оператора if, сверяем кол-во товаров на складе, и убираем из массива все товары, у которых значение на складе меньше 10.

Цикл For в PHP

Цикл со счетчиком for - выполняется определенное количество раз. Рассмотрим пример:

"; } ?>

В этом примере цикл будет выполняться 11 раз. От 0 (т.к. переменная $i = 0) до 10 (т.к. $i <= 10). Каждую итерацию $i будет увеличено на 1 ($i++). Чтобы было понятней, сделаем еще один пример:

"; } ?>

Цикл будет выполняться от 5 и до 9 ($i < 10 (в предыдущем примере было <= 10)).

Так же цикл можно выполнять в обратном порядке:

5; $i--) { echo "Номер итерации: $i
"; } ?>

Цикл будет выполнен от 10 и до 5.

Так же цикл можно выполнять с определенным шагом, рассмотрим пример:

"; } ?>

В цикле будет выполнено 3 итерации (0, 5, 10) с шагом 5. Каждую итерацию, счетчик цикла будет увеличен на 5.

Цикл foreach в PHP

Цикл foreach - самый распространенный цикл. Требуется почти во всех скриптах, особенно если php скрипт работает с базами данных. Используется для обхода массивов.

Например, рассмотрим небольшой пример:

$value) { echo "Ключ: $key, Значение: $value
"; } ?>

Запустив скрипт вы увидете:

Ключ: 0, Значение: red Ключ: 1, Значение: blue Ключ: 2, Значение: green Ключ: color, Значение: yellow Ключ: test, Значение: дизайн студия ox2.ru

Цикл while в PHP

Цикл while используется для выполнения цикла до тех пор, пока выполняется условие. Если условие ни когда не будет выполнено, то цикл зациклиться.

Рассмотрим пример:

"; } ?>

На экране увидим числа от 1 до 19

Цикл do-while в PHP:

Цикл do-while - работает точно так же как и цикл while , единственное отличие что условие выполняется после итерации. Напишем пример:

"; } while ($i < 20); //Выполняем цикл до те пор, пока $i < 20 ?>

На экране увидим числа от 1 до 20. Обратите внимание, что в предыдущем примере с циклом while было от 1 до 19, т.к. условие выполнялось до итерации цикла.

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

Для того чтобы пропустить итерацию, и перейти к следующей итерации - есть функция continue .

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

Очень часто при написании скриптов требуется выполнить одно и тоже действие несколько раз. Для этого и нужны циклы. Циклы в php, как и в других языках, делятся на несколько типов: Цикл со счетчиком for Цикл с условием while, do-while Цикл для обхода массивов foreach

OX2 2014-10-02 2014-10-02

Оператор break

Часто бывает удобно при возникновении некоторых условий иметь возможность досрочно завершить цикл. Такую возможность предоставляет оператор break. Он работает с такими конструкциями как: while, do while, for, foreach или switch.

Оператор break может принимать необязательный числовой аргумент, который сообщает ему, выполнение какого количества вложенных структур необходимо завершить. Значением числового аргумента по умолчанию является 1, при котором завершается выполнение текущего цикла. Если в цикле используется оператор switch, то break/break 1 выходит только из конструкции switch.

\n"; break 1; /* Выход только из конструкции switch. */ case 10: echo "Итерация 10; выходим
\n"; break 2; /* Выход из конструкции switch и из цикла while. */ } } // другой пример for ($bar1 = -4; $bar1 < 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo "Выполнение остановлено: деление на ноль невозможно."; break; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

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

Оператор continue

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

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

"; continue; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

Обратите внимание: в процессе работы цикла было пропущено нулевое значение переменной $counter, но цикл продолжил работу со следующего значения.

Оператор goto

goto является оператором безусловного перехода. Он используется для перехода в другой участок кода программы. Место, куда необходимо перейти в программе указывается с помощью метки (простого идентификатора), за которой ставится двоеточие. Для перехода, после оператора goto ставится желаемая метка.

Простой пример использования оператора goto:

Оператор goto имеет некоторые ограничение на использование. Целевая метка должна находиться в том же файле и в том же контексте, это означает, что вы не можете переходить за границы функции или метода, а так же не можете перейти внутрь одной из них. Также нельзя перейти внутрь любого цикла или оператора switch. Но его можно использовать для выхода из этих конструкций (из циклов и оператора switch). Обычно оператор goto используется вместо многоуровневых break.

"; } echo "после цикла - до метки"; // инструкция не будет выполнена end: echo "После метки"; ?>

Часто бывает удобно при возникновении некоторых условий иметь возможность досрочно завершить цикл. Такую возможность предоставляет оператор break . Он работает с такими конструкциями как: while, do while, for, foreach или switch .

Оператор break может принимать необязательный числовой аргумент, который сообщает ему, выполнение какого количества вложенных структур необходимо завершить. Значением числового аргумента по умолчанию является 1, при котором завершается выполнение текущего цикла. Если в цикле используется оператор switch , то break/break 1 выходит только из конструкции switch .

\n"; break 1; /* Выход только из конструкции switch. */ case 10: echo "Итерация 10; выходим
\n"; break 2; /* Выход из конструкции switch и из цикла while. */ } } // другой пример for ($bar1 = -4; $bar1 < 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo "Выполнение остановлено: деление на ноль невозможно."; break; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

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

continue

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

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

"; continue; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

Обратите внимание: в процессе работы цикла было пропущено нулевое значение переменной $counter , но цикл продолжил работу со следующего значения.

goto

goto является оператором безусловного перехода. Он используется для перехода в другой участок кода программы. Место, куда необходимо перейти в программе указывается с помощью метки (простого идентификатора), за которой ставится двоеточие. Для перехода, после оператора goto ставится желаемая метка.

Простой пример использования оператора goto:

Оператор goto имеет некоторые ограничение на использование. Целевая метка должна находиться в том же файле и в том же контексте, это означает, что вы не можете переходить за границы функции или метода, а так же не можете перейти внутрь одной из них. Также нельзя перейти внутрь любого цикла или оператора switch . Но его можно использовать для выхода из этих конструкций (из циклов и оператора switch). Обычно оператор goto используется вместо многоуровневых break .

"; } echo "после цикла - до метки"; // инструкция не будет выполнена end: echo "После метки"; ?>

Операторы цикла используются очень часто в любых языках программирования. Почти все задачи используют циклы, поэтому стоит обратить особое внимание на их изучение. В PHP существуют 4 вида циклов:

  • while (префиксная проверка условия);
  • do..while (постперфиксная проверка условия);
  • for ;
  • foreach ;

Первые три цикла похожи на стандартные циклы из языков программирования (С++, Pascal), а последний (foreach) на Perl. Рассмотрим в отдельности первые три операторов цикла, а последний будет рассмотрен в отдельном уроке. Отметим то, что каждый из циклов допускает вложенные циклы, то есть цикл внутри цикла.

Оператор цикла while в PHP

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

Синтаксис while в PHP:

//может быть сложное логическое условие { операторы; } ?>

В условие стоит некое выражение, которое должно быть либо истинным (true), либо ложным (false). В случае истинного значения условия выполняются операторы, которые стоят в фигурных скобках. После чего опять происходит проверка условия на истинность. Если условие ложное, то программа не входит в цикл. В случае одного оператора фигурные скобки можно опустить.

Примечание : условие может состоять из очень многих выражений с использованием алгебры логики &&, ||, ! и т.д.

Стоит обратить внимание на то, что если в условие есть операторы, то они должны как-то изменяться, иначе цикл просто зациклиться.

Приведу простой пример на использование while :

"; $i++; } ?>

Выше описанный пример выведет следующий результат:

i = 0
i = 1
i = 2
i = 3
i = 4

Обратите внимание, что $i=5 не будет выведено, т.к. i увеличивается в самом конце цикла и поэтому как только он достигнет 5, то условие входа в цикл просто не выполнится.

Оператор break в PHP

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

//условие всегда истинно { echo "i =".$i."
"; $i++; if($i>=5) break; } ?>

Результат будет такой же, как и в предыдущем примере.

Оператор continue в PHP

Оператор continue; прекращает текущую итерацию цикла, перемещаясь в начало, но не прекращает цикл полностью. Например:

//условие всегда истинно { echo "i =".$i."
"; $i++; if($i>=5) break; else continue; } ?>

Результат этого примера будет таким же, как и у предыдущих примеров.

Как показывает практика, операторы continue; и break; зачастую помогают реализовать сложные циклы.

Приведу ещё пример по использованию цикла while :

"; } //результаты этих двух while будут разными //из-за постпрефиксной и префиксной формы $i=0; while (++$i //префиксная форма { echo "i =".$i."
"; } ?>

Оператор цикла do...while в PHP

Оператор do...while очень похож на обычный while . Единственное их отличие во времени проверки условия. Цикл do...while будет выполнен хотя бы один раз, поскольку проверка происходит в самом конце. Синтаксис do...while :

Рассмотрим пример:

"; $i++; } while($i

Его результат аналогичен первым рассмотренным примерам.

Стоит отметить, что операторы continue; и break; также могут применяться в таких циклах.

Оператор цикла for в PHP

Синтаксис оператора for следующий:

В start происходит начальная инициализация переменных. В usloviya должны стоять одно или несколько условий завершения цикла. В shag заносятся операторы, которые выполняются в конце каждой итерации. Например:

"; } ?>

Результат выполнения этого цикла будет таким же как и у предыдущих примеров.

Большим плюсом использования for , что тело цикла может отсутствовать, а все необходимые операции выполнены в разделе shag . Для наглядности приведем пример:

", $i++); ?>

Замечание : в shag недопустимо использование функции echo .

Шаг цикла и условия могут быть самыми разнообразными. Например, можно написать не i++, а i+=5 (инкремент на 5).

Каждый из разделов цикла for может быть опущен, в таком случае получается бесконечный цикл:

for допускает использование continue; и break; .

На последок приведем пример двух эквивалентных конструкций цикла, но один будет for, а другой while

Эквивалентна следующей:



Рекомендуем почитать

Наверх