Php while break continue

Циклы

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

Каждое отдельное исполнение последовательности инструкций в цикле называется итерацией. Циклы очень удобны для выполнения таких распространенных задач, как отображение результатов запроса, когда в цикле выполняется обход всех полученных строк. Для организации циклов PHP предоставляет конструкции while, for и do . while. Каждый цикл состоит из двух основных частей. Первая определяет, когда должно быть остановлено исполнение цикла, и напоминает операцию сравнения в инструкции if. Вторая – собственно фрагмент программы, выполняющий необходимые действия, который может состоять из единственной строки или нескольких строк, заключенных в фигурные скобки.

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

Читайте также:  METANIT.COM

Курс PHP для начинающих

Цикл while

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

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

Цикл while, тело которого исполняется 10 раз

$num = 1; while ($num "; $num++; > print 'Конец.';

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

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

Курс PHP для начинающих

Цикл do-while

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

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

$num = 11; do < $num--; print "Цикл номер $num
"; > while ($num 1); print 'Конец.';

Если бы мы использовали цикл while с этим условием, то он не выполнился бы ни разу, т.к. переменная $num = 11 > 10. В случае использования цикла do-while выполняется минимум одна итерация цикла. В нашем примере в этой итерации происходит декремент переменной $num и она становится равной 10, вследствие чего выполняются последующие итерации цикла, до тек пор пока $num > 1.

Курс PHP для начинающих

Цикл for

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

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

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

for ($num = 1; $num "; > print 'Конец.';

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

При определении цикла for можно опустить любое из трех выражений, например выражение инициализации, но разделительные точки с запятыми (;) следует ставить всегда. Цикл for без выражения инициализации приведен в примере ниже:

Цикл for без выражения инициализации

$num = 1; for ( ; $num "; > print 'Конец.';

Кроме того, допускается включение вместо каждого отдельного выражения в цикле for нескольких выражений, разделенных запятыми. Условие рассматривается как истинное, если любое из его подвыражений является истинным. Таким образом, несколько подвыражений, разделенных запятыми, эквивалентны одному выражению, соединенному операциями or. Например:

Цикл for с несколькими выражениями

Курс PHP для начинающих

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

Стандартный способ выхода из циклической конструкции состоит в создании такого условия, что проверка главного выражения цикла приводит к получению ложного значения. Еще один способ выхода из всех циклических конструкций, включая while, do-while и for, состоит в использовании специальных команд break и continue, которые подчиняются описанным ниже правилам:

  • Команда break обеспечивает выход из самой внутренней циклической конструкции, которая содержит эту команду.
  • Команда continue позволяет перейти в конец текущей итерации самой внутренней циклической конструкции, которая содержит эту команду.

Например, выполнение следующего кода:

не выводит ничего, поскольку число 1 является нечетным и поэтому цикл for немедленно заканчивается. С другой стороны, код

выводит строку «2 4 6 8» поскольку оператор continue позволяет пропустить все операторы, в которых были бы выведены нечетные числа.

Команда break позволяет программисту выбрать вариант организации цикла, полностью исключающий необходимость проверки главного условия завершения цикла. Рассмотрим следующий код, который обеспечивает формирование и вывод списка простых чисел (т.е. чисел, которые делятся только на само это число или на единицу):

$limit = 500; $number = 2; while(TRUE) // Бесконечный цикл < $test = 2; if ($number >$limit) break; while (TRUE) < if ($test >sqrt($number)) < print "$number "; break; >// Проверить, делится ли $number на $test if ($number % $test == 0) break; $test++; > $number++; >

В приведенном выше коде имеются два цикла while, во внешнем цикле осуществляется перебор всех чисел от 1 до 500, а во внутреннем фактически проверяется делимость с помощью каждого возможного делителя. Если во внутреннем цикле обнаруживается хотя бы один делитель, то рассматриваемое число не является простым, поэтому работа цикла прерывается без вывода какого-либо значения. Если же, с другой стороны, проверка доходит до потенциального делителя, который не меньше квадратного корня рассматриваемого числа, то можно уверенно предположить, что это число является простым, поэтому внутренний цикл прерывается после вывода данного числа. Наконец, внешний цикл прерывается после достижения значения предельного количества проверяемых чисел. В данном случае результатом является список простых чисел меньше 500:

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

Еще один цикл, который здесь мы не рассмотрели — это цикл foreach, который используется только для перебора в цикле содержимого массивов. Этот цикл будет рассмотрен при обсуждении массивов.

Источник

PHP: break, continue и goto

Часто бывает удобно при возникновении некоторых условий иметь возможность досрочно завершить цикл. Такую возможность предоставляет оператор 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 'После метки'; ?>

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru

Источник

Использование циклов в PHP

PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.

Foreach – перебор массива

Предназначен для перебора элементов массива.

Foreach – перебор массива

$array = array( 1 => 'Значение 1', 2 => 'Значение 2', 3 => 'Значение 3', 4 => 'Значение 4', ); // Вывод ключей foreach ($array as $key => $val) < echo $key . '
'; > // Вывод значений foreach ($array as $key => $val) < echo $val . '
'; >

Результат:

1 2 3 4 Значение 1 Значение 2 Значение 3 Значение 4

Альтернативный синтаксис foreach

For – цикл с счетчиком

Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.

For – цикл с счетчиком

// Счетчик от 0 до 5 for ($n = 0; $n // Счетчик от 5 до 0 for ($n = 5; $n >= 0; $n--)

Результат:

Альтернативный синтаксис

$array = array( 'Значение 1', 'Значение 2', 'Значение 3', 'Значение 4', ); for ($n = 0; $n < count($array); $n++) < echo $array[$n] . '
'; >

Результат:

Значение 1 Значение 2 Значение 3 Значение 4

Альтернативный синтаксис for

While – цикл с предусловием

Т.е. если перед началом итерации условие выполняется, то цикл продолжает свою работу.

While – цикл с предусловием

Результат:

Альтернативный синтаксис while

Do-while – цикл с постусловием

В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-while не имеет альтернативного синтаксиса.

Do-while – цикл с постусловием

Результат:

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

Break

Вызов break или break 1 в цикле останавливает его.

Для вложенных циклов используется break 2 и т.д.

Continue

Используется для пропуска итерации.

Результат:

Для вложенных циклов по аналогии с break 2 , break 3 – continue 2 , continue 3 .

Источник

PHP Break and Continue

You have already seen the break statement used in an earlier chapter of this tutorial. It was used to «jump out» of a switch statement.

The break statement can also be used to jump out of a loop.

This example jumps out of the loop when x is equal to 4:

Example

PHP Continue

The continue statement breaks one iteration (in the loop), if a specified condition occurs, and continues with the next iteration in the loop.

This example skips the value of 4:

Example

Break and Continue in While Loop

You can also use break and continue in while loops:

Break Example

Continue Example

Unlock Full Access 50% off

COLOR PICKER

colorpicker

Join our Bootcamp!

Report Error

If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:

Thank You For Helping Us!

Your message has been sent to W3Schools.

Top Tutorials
Top References
Top Examples
Get Certified

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Источник

Оцените статью