Команда foreach языка php. Как использовать циклы while и do-while. Синтаксис цикла while в PHP

Чтобы приступить к использованию циклов, нужно узнать, что они собой представляют, на что способны и зачем нужны в сценариях. Цикл - это блок кода, позволяющий повторять выполнение некоторых действий (инструкций) определенное количество раз. Каждое отдельное исполнение (одно или более повторений) последовательности инструкций в цикле называется - итерация .

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

Программный код цикла исполняется до тех пор, пока условное выражение цикла возвращает значение TRUE . Чтобы избежать бесконечного цикла, который будет крутиться вечно, код тела цикла должен заставить условное выражение в определенный момент вернуть значение FALSE . Когда это произойдет, работа цикла прекратится, и исполнение продолжится со строки кода, расположенной непосредственно после цикла.

Цикл while

Цикл while является простейшим видом цикла в PHP. Его синтаксис:

Ниже приводится пример цикла while , тело которого исполняется 10 раз:

\n"; $num++; } ?>

Перед началом цикла значение переменной $num устанавливается равным 1 (значение может быть любым). Это называется инициализацией переменной-счетчика. Каждый раз, когда исполняется тело цикла, с помощью инкремента $num++ значение переменной $num увеличивается на единицу. Значение выражения ($num <= 10) проверяется каждый раз перед итерацией цикла. После десяти итераций условное выражение вернет значение FALSE (так как значение переменной $num уже будет не меньше или равно 10) и работа цикла прекратится. В том случае, если условное выражение while будет равно FALSE с самого начала, тело цикла ни разу не будут выполнено.

Большинство циклов имеют переменные-счетчики, аналогичные $num . Чаще всего в качестве счетчиков цикла выступают переменные с именами i, j и k , хотя для того чтобы сделать программный код более понятным, следует давать счетчикам более наглядные имена.

Цикл do while

Цикл do while очень похож на цикл while , с тем отличием, что условное выражения проверяется в конце итерации, а не в начале. Синтаксис этого цикла:

Между циклом do while и обычным циклом while имеется два отличия. Во-первых, цикл do while требует как ключевого слова do (для отметки начала цикла), так и ключевого слова while (для отметки конца цикла и указания условия). Во-вторых, в отличие от цикла while , цикл do while завершается точкой с запятой. Данная разновидность цикла полезна, когда тело цикла должно быть исполнено хотя бы один раз, независимо от значения условного выражения.

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

\n"; $num++; } while ($num <= 10); ?>

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

Синтаксис цикла while в PHP

Синтаксис цикла while :

Пример использования цикла while в PHP :

В примере цикла while в php , приведенном выше, сначала инициализируется переменная счётчика $ i значением 0 .

Условие цикла while – это $ i < 10 . Это означает, что мы проверяем, меньше ли переменная, чем 10.

Всё, что заключено в фигурные скобки – это инструкции (тело ) цикла. Они повторяются до тех пор, пока условие возвращает значение true . В примере, приведенном выше, $ i выводится на экран, а затем переменная счётчика увеличивается на 1. Это важно чтобы условие цикла, в конце концов, перестало соблюдаться. Если условие цикла соблюдается всегда, например, потому что вы забыли увеличить переменную счётчика $ i , тогда скрипт войдёт в бесконечный цикл. К счастью, через некоторое время PHP прекратит выполнение вашего скрипта.

Вы можете сделать как условие цикла, так и тело цикла сколь угодно сложными. Например, использовать while внутри while php, использовать php while для перебора массива (array ) или определить более одной переменной счётчика:

$min) { echo "count1: $count1; count2: $count2
"; $ counter1 += 2; // Сокращённое выражение для $counter1 = $counter1 + 2; $counter2 -= 3; // Сокращённое выражение для $count2 = $count2-3; } ?>

В примере определяются две переменные: $ counter 1 и $ counter 2 . Одна переменная увеличивается на 2, а другая уменьшается на 3. Цикл while выполняется, пока соблюдаются оба условия $ count 1 < $ max и $ count 2 > $ min .

Влияние ключевых слов break и continue на цикл

С помощью команды break можно прервать процесс выполнения цикла while в PHP . Допустим, мы ищем определённого пользователя. Тогда можно пройти по всем пользователям в цикле while . Если найдём нужного пользователя, то остановим цикл с помощью ключевого слова break .

Простой пример использования ключевого слова break :

while ($count < $max) { if ($count == 10) { echo "Останавливаемся на числе 10"; break; } echo "$count,"; $counter += $increment; // увеличивает $count на значение $increment } ?>

Этот код перебирает числа по возрастанию от 0 до $max = 30 , прибавляя к переменной $ count значение $ increment , другими словами число 2. Но если переменная $ count будет равна 10, произойдет выход из цикла while в php .

Ключевое слово continue не завершает цикл while в php полностью , а лишь пропускает оставшуюся часть тела цикла. Приведенный ниже пример демонстрирует это:

while ($count < $max) { $counter += $increment; // увеличивает $payer на $increment if ($count >= 10 && $count <= 15) { echo "Число между 10 и 15
"; continue; }

echo "$count
"; } ?>

Этот цикл начинается с 0 и увеличивает счётчик до значения $ max . Переменная $ counter всегда увеличивается на значение переменной $ increment . То есть принимает значения 0, 2, 4 и т.д.

Если переменная $ count имеет значение между 10 и 15, на экран будет выведен текст и оператор continue пропустит остальные выражения в теле цикла. В результате мы видим, что числа 10, 12 и 14 не выводятся.

Цикл do-while в PHP

Небольшой модификацией while является цикл do — while . В данном случае условие цикла проверяется только после выполнения его тела. Это значит, что тело цикла выполнится хотя бы один раз.

Синтаксис цикла do-while :

Предположим, что мы хотим сгенерировать случайное число, которое должно быть либо между 0 и 10, либо между 20 и 30. Согласно определению функции rand ($ min , $ max ) , можно случайным образом сгенерировать число между $ min и $ max :

10 && $random < 20) { $random = rand (0, 30); }

echo "Наше случайное число: $random"; ?>

Используя php цикл do while , можно получить значение выражения без инициализации переменной $ random . Тело цикла выполняется перед тем, как проверяется условие. Тогда пример, приведенный выше, будет выглядеть следующим образом:

10 && $random < 20);

echo " Наше случайное число: $random"; ?>

Новичка цикл do-while может слегка сбить с толку. Если вы до конца не понимаете его цели, то это не проблема. Циклы do-while редко используются на практике.

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

Здравствуйте дорогие читатели и постоянные подписчики! Пришло время продолжить цикл статей о PHP и сегодня мы изучим такую базовую и при этом очень важную вещь, как циклы. Что вам нужно знать о циклах в первую очередь? А то, что применяются они везде и всюду, и шаблоны Joomla, VirtueMart, Wordpress, OpenCart и любой другой CMS - не исключение.

Что такое цикл? Цикл — это многократное повторение одного и того же участка кода. Сколько нужно сделать повторений – зависит от счётчика цикла, который мы сами создаём и можем им управлять. Это очень удобно, например, когда нам нужно отрисовать товары в категории интернет-магазина, вывести посты в блоге, вывести комментарии к статье или товару, все меню в CMS (движках сайтов) сделаны тоже с помощью циклов. В общем, циклы используются очень часто.

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

Оператор ++ (инкремент) увеличивает значение переменной на единицу, в то время как оператор -- (декремент) уменьшает значение переменной на единицу. Их очень удобно использовать в циклах как счётчик, да и в программировании в целом. Различают также ПРЕ инкремент/декремент и ПОСТ инкремент/декремент:

PRE инкремент/декремент ++$a Увеличивает $a на единицу и возвращает значение $a. --$a Уменьшает $a на единицу и возвращает значение $a. POST инкремент/декремент $a++ Возвращает значение $a, а затем увеличивает $a на единицу. $a-- Возвращает значение $a, а затем уменьшает $a на единицу.

Например:

$a = 1; echo "Вывод числа: " . $a++; // Вывод числа: 1 echo " Вывод числа: " . $a; // Вывод числа: 2 echo "Вывод числа: $a"; $a += 1; // тоже самое, что и в первой строке $a = 1; echo "Вывод числа: " . ++$a; // Вывод числа: 2 echo "Вывод числа: " . $a; // Вывод числа: 2 $a += 1; echo "Вывод числа: $a"; // тоже самое, что и в первой строке этого блока

Цикл for

for (часть А; часть В; часть С){ // Любой код, сколько угодно строк; }

Цикл for состоит из 3 частей и самого тела. Часть А просто выполняет то, что в ней написано, как правило, в 90% случаев там создаётся счётчик цикла. Часть В – это, грубо говоря, уже знакомый нам if , то есть проверка на истину (true?). Если условие верно, то есть true , тогда PHP заходит внутрь цикла и продолжает его исполнять. Часть С – тоже самое что часть А, как правило в Части С мы делаем какие-то преобразования с счётчиком. Например:

"; } echo "ВЫШЛИ ИЗ ЦИКЛА и пошли дальше по коду..."; ?>

Теперь об алгоритме работы цикла for. Первым делом, увидев for, PHP заходит в часть А и выполняет её один единственный раз (см. изображение ниже). Далее PHP переходит в часть В и проверяет, true там или false. Если true, то выполняет тело цикла и только после этого переходит в часть С. После этого PHP снова переходит в часть В и проверяет, там до сих пор true или уже нет. Если нет, то цикл заканчивается, если да, то продолжается до тех пор, пока в части В не будет false.

Результат работы предыдущего примера:

Цикл While

while (часть В){ // Любой код, сколько угодно строк; }

Как видите, здесь нету части А и части С, из цикла for здесь осталось только условие, то есть часть В. Если нам нужно использовать счётчик, то мы должны поместить его внутрь цикла while, среди остального кода, это будет част С. А создавать счётчик нужно до начала конструкции while:

Часть А; while (часть В){ // Любой код, сколько угодно строк; Часть С; }

Переделаем предыдущий цикл for в цикл while:

"; $i++; } echo "ВЫШЛИ ИЗ ЦИКЛА и пошли дальше по коду..."; ?>

Результат будет точно таким же. Что использовать: цикл for или цикл while – дело вкуса, смотрите как вам удобней и логичней, разницы нет.

Цикл do... while

Менее распространённый из всех видов циклов. По сути это перевёрнутый while. Его фишка в том, что PHP хотя бы один раз (первый), но обязательно зайдёт в тело цикла do... while, потому что в этом цикле условие в конце:

Часть А; do{ // Любой код, сколько угодно строк; Часть С; }while(Часть В);

"; $i++; }while($i < 8); echo "ВЫШЛИ ИЗ ЦИКЛА и пошли дальше по коду..."; ?>

Важно понимать: во всех трёх видах циклов нет обязательных частей.

Пример цикла for без части А и части С:

For(;$i > 8;){ // ваш код }

Пример цикла for без всех трёх частей:

For(;;){ // классический бесконечный цикл }

То есть все точки с запятой всё равно остаются в цикле for, такой синтаксис!

Бесконечные циклы

Бесконечный цикл – это ошибка разработчика, при которой страница никогда не сможет загрузиться до конца, так как условие цикла (часть В) всегда будет true. Например:

"; $i++; }while($i != 0); echo "ВЫШЛИ ИЗ ЦИКЛА и пошли дальше по коду..."; ?>

Результат:

Это я показал лишь часть, потому что в экран всё не помещается. Вот так ваш браузер и сервер вашего сайта будут мучатся бесконечно, пока браузер не откажет секунд через 30. А все потому, что в примере выше переменная $i никогда не будет равно нулю, она изначально равна 1 и постоянно возрастает.

То есть разработчик был невнимательным, когда придумал такое условие.

Управление циклами

Оператор break. Бывают ситуации, когда нам не нужно, чтобы цикл отыгрывал все итерации (повторения). Например, в какой-то определённый момент мы хотим его прервать и продолжить выполнение ниже по коду:

"; if ($i === 5) break; // выходим из цикла если $i равно 5 $i++; } echo "Я умею считать только до 5:("; ?>

Результат:

В примере выше как только мы дошли до пяти, PHP вышел из цикла, а так бы он досчитал до 7.

Оператор continue тоже прерывает выполнение цикла, но в отличии от break, continue не выходит из цикла, а возвращает интерпретатор PHP назад к условию (к части В). Пример:

"; } echo "Что-то пропустил?"; ?>

Результат:

Только что мы пропустили цифру 5, так как PHP не дошёл до echo.

Цикл может быть вложен в цикл. В таком случае операторы continue и break распространяются только на один цикл, тот, в котором они находятся. То есть другими словами перебрасывают на один уровень, а не через все. Пример:

Но мы и сами можем выбирать, через сколько уровней нужно перепрыгнуть:

"; $i++; $i=1; $k=1; while ($k < 8) { echo "Итерация $k номер ". $k . "
"; if ($k === 5) break 2; $k++; } } ?>

Результат:

Естественно при этом мы не можем ставить число больше, чем у нас вложенных циклов.

Цикл foreach

Самый последний по порядку, но самый важный по значению – это цикл foreach. Используется только для перебора и объектов (их учить ещё слишком рано). Пример синтаксиса:

"; } ?>

Результат:

Это была коротка конструкция foreach, но она имеет и расширенную версию, которая кроме значения ячеек массива выводит ещё и названия ячеек (ключи):

$value) { echo "В разделе " . $key . " есть статья под названием: ". $value . "
"; } ?>

Результат:

Обращаю ваше внимание на то, что переменные мы можем называть как захотим, хоть $key и $value, хоть $xxx и $yyy.

Если массив, то используем только цикл foreach и никаких других. Именно этот цикл используется повсюду в VirtueMart, да и вообще везде.

Операторы цикла используются очень часто в любых языках программирования. Почти все задачи используют циклы, поэтому стоит обратить особое внимание на их изучение. В 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

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

Последнее обновление: 1.11.2015

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

Цикл for

Цикл for имеет следующее формальное определение:

For ([инициализация счетчика]; [условие]; [изменение счетчика]) { // действия }

Рассмотрим стандартный цикл for:

"; } ?>

Первая часть объявления цикла - $i = 1 - создает и инициализирует счетчик - переменную $i. И перед выполнением цикла его значение будет равно 1. По сути это то же самое, что и объявление переменной.

Вторая часть - условие, при котором будет выполняться цикл. В данном случае цикл будет выполняться, пока $i не достигнет 10.

Третья часть - приращение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: $i--.

В итоге блок цикла сработает 9 раз, пока значение $i не станет равным 10. И каждый раз это значение будет увеличиваться на 1. Каждое отдельное повторение цикла называется итерацией. Таким образом, в данном случае произойдет 9 итераций.

Цикл while

Цикл while проверяет истинность некоторого условия, и если условие истинно, то выполняются блок выражений цикла:

"; $counter++; } ?>

Если в блоке while всего одна инструкция, то фигурные скобки блока можно опустить:

"; ?>

Цикл do..while

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

"; $counter++; } while($counter<10) ?>

Операторы continue и break

Иногда возникает ситуация, когда требуется выйти из цикла, не дожидаясь его завершения. В этом случае мы можем воспользоваться оператором break:

80) { break; } echo "Квадрат числа $i равен $result
"; } ?>

И если вдруг результат операции окажется больше 80, то происходит выход из цикла.

Для управления циклами также применяется оператор continue . Он осуществляет переход к следующей итерации цикла:

"; } ?>

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