Структуры управления и циклы php: if, else, for, foreach, while и многое другое
Содержание:
- Операторы break и continue
- Что такое структура управления?
- Цикл for в обратном направлении
- Блок схема цикла с постусловием (do-while)
- Цикл for
- Проходим через различные управляющие структуры
- PHP выйти из цикла:
- Цикл Foreach в php
- Все типы циклов
- Различные типы циклов в PHP
- Выход из цикла в php Break и Continue
- Цикл foreach
Операторы break и continue
Стандартный способ выхода из циклической конструкции состоит в создании такого условия, что проверка главного выражения цикла приводит к получению ложного значения. Еще один способ выхода из всех циклических конструкций, включая while, do-while и for, состоит в использовании специальных команд break и continue, которые подчиняются описанным ниже правилам:
-
Команда break обеспечивает выход из самой внутренней циклической конструкции, которая содержит эту команду.
-
Команда continue позволяет перейти в конец текущей итерации самой внутренней циклической конструкции, которая содержит эту команду.
Например, выполнение следующего кода:
Код PHP
не выводит ничего, поскольку число 1 является нечетным и поэтому цикл for немедленно заканчивается. С другой стороны, код
Код PHP
выводит строку «2 4 6 8» поскольку оператор continue позволяет пропустить все операторы, в которых были бы выведены нечетные числа.
Команда break позволяет программисту выбрать вариант организации цикла, полностью исключающий необходимость проверки главного условия завершения цикла. Рассмотрим следующий код, который обеспечивает формирование и вывод списка простых чисел (т.е. чисел, которые делятся только на само это число или на единицу):
Код PHP
В приведенном выше коде имеются два цикла while, во внешнем цикле осуществляется перебор всех чисел от 1 до 500, а во внутреннем фактически проверяется делимость с помощью каждого возможного делителя. Если во внутреннем цикле обнаруживается хотя бы один делитель, то рассматриваемое число не является простым, поэтому работа цикла прерывается без вывода какого-либо значения. Если же, с другой стороны, проверка доходит до потенциального делителя, который не меньше квадратного корня рассматриваемого числа, то можно уверенно предположить, что это число является простым, поэтому внутренний цикл прерывается после вывода данного числа. Наконец, внешний цикл прерывается после достижения значения предельного количества проверяемых чисел. В данном случае результатом является список простых чисел меньше 500:
Обратите внимание на крайне важное свойство, которое иллюстрируется в этом коде, заключающееся в том, что оператор break прерывает только тот цикл while, в теле которого он находится. Еще один цикл, который здесь мы не рассмотрели — это цикл foreach, который используется только для перебора в цикле содержимого массивов. Этот цикл будет рассмотрен при обсуждении массивов
Этот цикл будет рассмотрен при обсуждении массивов
Еще один цикл, который здесь мы не рассмотрели — это цикл foreach, который используется только для перебора в цикле содержимого массивов. Этот цикл будет рассмотрен при обсуждении массивов.
Что такое структура управления?
Проще говоря, структура управления позволяет вам контролировать поток выполнения кода в вашем приложении. Как правило, программа выполняется последовательно, по очереди, а структура управления позволяет вам изменять этот поток, обычно в зависимости от определенных условий.
Структуры управления — это основные функции языка PHP, которые позволяют вашему сценарию реагировать по-разному на разные входные данные или ситуации. Это может позволить вашему сценарию давать разные ответы на основе пользовательского ввода, содержимого файла или некоторых других данных.
Следующая блок-схема объясняет, как структура управления работает в PHP.
Как видно на приведенной выше диаграмме, сначала проверяется условие. Если условие истинно, будет выполнен условный код
Важно отметить, что выполнение кода продолжается нормально после выполнения условного кода
Рассмотрим следующий пример.
В приведенном выше примере программа проверяет, вошел ли пользователь в систему. На основе состояния входа пользователя они будут перенаправлены на страницу входа Login или на страницу учетной записи My Account. В этом случае структура управления завершает выполнение кода, перенаправляя пользователей на другую страницу. Это ключевая способность языка PHP.
PHP поддерживает несколько различных структур управления:
- do-while
- и другие
Давайте рассмотрим некоторые из этих структур управления на примерах.
Цикл for в обратном направлении
for ($i = 10; $i > 0; $i—)
{
echo $i.'<br>’;
}
Результат:
10987654321
Следующий цикл к рассмотрению — это цикл foreach, который имеет такую структуру:
foreach (array key => value)
{
тело цикла
}
Не буду говорить общими фразами, о цикле foreach — это второй тип цикла, который я использую, кроме цикла for! Цикл for — это конечно классный простой цикл, в котором все понятно! Но некоторые вещи для него невозможны, ну или возможны, но придется наслаивать столько циклов внутри других циклов, что проще научиться пользоваться циклом foreach
Например для вывода ассоциативного массива — цикл foreach — самое то!
Этот тип массива вывели в
Блок схема цикла с постусловием (do-while)
Данная схема очень похожа на предыдущую с одним нюансом — сначала выполняется код в теле цикла (обозначен прямоугольником). Затем проверяется условие. Если оно истинно — всё повторяется, если нет — завершается.
Задания:
- Найти квадрат нечетных чисел.
- Найти сумму делителей числа a.
- Проверить, является ли число совершенным (равным сумме всех его делителей).
- Выяснить, является ли введенное число неполным (делится только на себя и на единицу)
Ответы к заданиям предыдущей статьи (про условный оператор if):
Дан номер месяца (1-12). Отобразить в виде слова этот месяц. Если такого месяца не существует — отобразить ошибку.
Эта задача имеет несколько способов решения. Через условия делается очень просто: проверяем, ввел ли пользователь цифру 1. Если да (условие истинно) — выводим январь. Если нет — проверяем, ввел ли пользователь цифру 2 и т.д. В конце, если пользователь ничего не ввел — выдаем ошибку.
Пусть за введенное пользователем число отвечает переменная $n. Тогда программа будет выглядеть следующим образом:
Найдите среднее арифметическое, состоящее из 5 чисел.
Так как даны 5 чисел, значит понадобятся 5 переменных. Находим в Интернете формулу для вычисления среднего арифметического значения (для его нахождения необходимо сложить все числа и разделить на их количество). Получилась следующая простая программа:
Опубликовано: 2018-10-30 15:08:28
Цикл for
Инструкция for – это вариант цикла с предусловием, который состоит из трех необязательных выражений, заключенных в круглые скобки и разделенных точками с запятой, за которым следует оператор (обычно оператор блока), который должен выполняться в цикле. Она имеет следующий синтаксис:
Описание синтаксиса:
- Инициализация. Присваивается первоначальное значение переменной, обычно – счетчика. Выполняется только один раз в начале выполнения оператора. Областью действия этой переменной будет тело цикла.
- Выражение – булево выражение, которое вычисляется на каждой итерации цикла. Представляет собой условие продолжения работы оператора цикла. После того, как значение счетчика достигнет указанного предела, цикл завершится.
- Обновление – это значение, на которое будет увеличиваться или уменьшаться счетчик цикла. Вычисляется по завершении каждой итерации цикла. Чтобы оно было полезным, как и выражение инициализации, оно должно иметь побочные эффекты. В общем случае таким побочным эффектом служит операция присваивания, инкремента или декремента.
Пример цикла for:
Выполнить код »
Скрыть результаты
Рассмотрим выполнение этого цикла более подробно:
- Инициализация: Переменная-счетчик, в данном случае х, инициализируется значением 1. Выполняется один-единственный раз, при заходе в цикл.
- Выражение: x – это условие продолжения цикла for, оно проверяется перед каждой итерацией и при входе в цикл на истинность. Если это так, то выполняются инструкции тела цикла (в данном случае – инструкция alert( x + » » );).
- Обновление: x++ – изменяет значение переменной-счетчика. Выполняется после тела на каждой итерации, но перед проверкой условия x .
- Тело цикла: alert( x + » » ) – тело цикла обрамляется фигурными скобками, если тело цикла состоит из одной операции, то фигурные скобки можно опустить.
Иными словами, поток выполнения цикла: Инициализация → (если условие выражения → тело цикла → обновление (x++)) → (если условие выражения → тело цикла → обновление (x++)) → … и так далее, пока верно условие – x .
Циклы for могут быть более сложными, чем в приведенных выше примерах. В некоторых циклах на каждой итерации может изменяться одновременно несколько переменных. В таких циклах часто применяется оператор «запятая» – он позволяет объединить несколько выражений инициализации и инкрементирования в одно, например:
Выполнить код »
Скрыть результаты
Проходим через различные управляющие структуры
В предыдущем разделе мы изучили основы структур управления в PHP и их полезность при разработке приложений. В этом разделе мы рассмотрим пару важных структур управления, которые вы часто используете в повседневной разработке приложений.
If
Конструкция позволяет вам выполнить часть кода, если прилагаемое выражение вместе с ней оценивается как true.
Давайте посмотрим на следующий пример, чтобы понять, как это работает.
Вышеприведенный пример должен выводить потому что выражение принимает значение true. Фактически, если вы хотите выполнить только один оператор, приведенный выше пример можно переписать, как показано в следующем фрагменте без скобок.
С другой стороны, если у вас есть несколько операторов для выполнения, вы должны использовать скобки, как показано в следующем фрагменте.
Else
В предыдущем разделе мы обсудили конструкцию , которая позволяет вам выполнить кусок кода, если выражение оценивается как true. С другой стороны, если выражение оценивается как false, оно ничего не сделает. Чаще всего вы также хотите выполнить другой фрагмент кода, если выражение принимает значение false. Вот где выражение появляется на картинке.
Вы всегда используете оператор в сочетании с оператором . В принципе, вы можете определить его, как показано в следующем псевдокоде.
Давайте рассмотрим предыдущий пример, чтобы понять, как он работает.
Поэтому, когда у вас есть два варианта, и один из них должен быть выполнен, вы можете использовать конструкцию .
Else If
Мы можем рассматривать оператор как расширение конструкции . Если у вас есть более двух вариантов на выбор, вы можете использовать инструкцию .
Давайте рассмотрим базовую структуру инструкции , как показано в следующем псевдокоде.
Опять же, давайте попробуем понять это, используя реальный пример из жизни.
Как вы можете видеть в приведенном выше примере, у нас есть несколько условий, поэтому мы использовали ряд инструкций . В случае, если все условия равны false, он выполняет код, указанный в последнем объявлении .
Switch
Оператор switch несколько похож на оператор , который мы только что обсуждали в предыдущем разделе. Единственное отличие — это проверенное выражение.
В случае конструкции у вас есть набор различных условий, и соответствующее действие будет выполнено на основе условия. С другой стороны, если вы хотите сравнить переменную с разными значениями, вы можете использовать оператор .
Как обычно, пример это лучший способ понять оператор .
Как вы можете видеть в приведенном выше примере, мы хотим проверить значение переменной и на основе значения переменной мы хотим вывести сообщение.
Для каждого значения, которое вы хотите проверить с помощью переменной , вы должны определить блок . Если значение сопоставляется с case, будет выполняться код, связанный с этим блоком. После этого вам нужно использовать оператор для завершения выполнения кода. Если вы не используете оператор , выполнение скрипта будет продолжено до последнего блока в инструкции switch.
Наконец, если вы хотите выполнить кусок кода, если значение переменной не соответствует ни одному случаю, вы можете определить его в блоке . Конечно, это не обязательно — это всего лишь способ предоставить случай по умолчанию.
Это был обзор структур условного контроля. Мы обсудим циклы в PHP в следующем разделе.
PHP выйти из цикла:
Что бы в PHP выйти из цикла, есть два способа, первый, просто сделать переменную которая будет равна true, а в цикле условий и кода оно выполняется менять переменную на false.
PHP
1 2 3 4 5 6 7 8 9 10 11 12 |
$i=;// Создаём переменную и присваиваем ей ноль $cycle_works=true;// Переменная, которая отвечает за работу в цикли while($cycle_works){ echo$i.’ ‘;// Выводим переменную $i $i++;// Увеличиваем переменную $i на один // Условие при котором надо менять значение переменной $cycle_work if($i==10){ $cycle_works=false;// меняем значение переменной } } |
Это очень простой способ, но на мой взгляд, это редко бывает полезно, но возможно кому то полезно.
Второй вариант, в том, что бы в PHP использовать break и continue, сейчас вы узнаете о них.
Continue:
Как же использовать в PHP в цикле while continue, всё очень просто.
PHP
1 2 3 4 5 6 7 8 9 10 |
$i=;// Создаём переменную и присваиваем ей ноль while($i<5){ $i++;// Увеличиваем переменную на один // условие при котором должен выходить цикл if($i==2){ continue;// Выход из цикла } echo$i.’ ‘;// Отображение $i } |
Вот результат.
Как видите цифра два не вывелась, но почему же вывелись остальные, дела в том, что continue выходит из цикла перед циклом, при этом переменная $i не обнуляется.
То есть, то что идёт после continue не будет работать, при этом цикл снова пройдётся без изменений, надеюсь мне удалось понятно это объяснить.
break:
В PHP это почти тоже самое, что и continue, но выходит из цикла уже после него, то есть цикл больше не будет проходить, сейчас покажу это на примере while break.
PHP
1 2 3 4 5 6 7 8 9 10 |
$i=;// Создаём переменную и присваиваем ей ноль while($i<5){ $i++;// Увеличиваем переменную на один // условие при котором должен выходить цикл if($i==2){ break;// Выход из цикла } echo$i.’ ‘;// Отображение $i } |
Результат этого кода.
Так получается, потому что, когда переменная $i, становится равна двум, то срабатывает break и выходит из цикла, после цикла, не успев вывести на экран.
Но на мой взгляд лучше делать правильные условия работы цикла, чем использовать break и continue.
Цикл Foreach в php
Обход массива наиболее выгодным образом происходит при помощи итерационного цикла foreach
, позаимствованного из синтаксиса языка Perl.
Рис. 4.6. Пример использования цикла Foreach, полный вариант
Результат:
Массив с индексом 0 равен 1
Массив с индексом 1 равен 2
Массив с индексом 2 равен 3
Массив с индексом 3 равен 4
Пример:
Выводить индексы и значения массива user , в котором записаны данные об Иване
Решение:
1 2 3 4 5 6 7 8 |
$user = $user = $user = foreach echo } |
Результат:
Пример:
- Выводить приветствие для имен из списка
- Кроме приветствия выводить номера в списке
1 2 3 4 5 6 7 8 9 10 |
$names // 1 задание foreach echo } // 2 задание foreach echo } |
$names = array(«Иван»,»Петр»,»Семен»);
// 1 задание
foreach ($names as $val) {
echo «Привет, $val «;
}
// 2 задание
foreach ($names as $k => $val) {
echo «Привет, $val !
Ты в списке под номером $k «;
}
Результат:
Задание php 4_3:
Дан массив, состоящий из названий дней недели. Вывести элементы, используя конструкцию foreach .
Дополнительно:
вывод должен быть в формате: понедельник
– день 1
-й
Лабораторная работа:
Нарисовать (добавить) навигационное меню на странице, типа:
a |
Contact
используя массив в качестве структуры меню.
Алгоритм:
- Создайте ассоциативный массив $menu
- Заполните массив, соблюдая следующие условия:
- Индексом элемента массива является пункт меню, например: Home
, About
, Contact
… - Значением элемента массива является имя файла, на который будет указывать ссылка, например: index.php
, about.php
, contact.html
…
Используя цикл foreach отрисуйте вертикальное меню, структура которого описана в массиве $menu
Операторы цикла используются очень часто в любых языках программирования
Почти все задачи используют циклы, поэтому стоит обратить особое внимание на их изучение. В PHP существуют 4 вида циклов:
- while
(префиксная проверка условия); - do..while
(постперфиксная проверка условия); - for
; - foreach
;
Первые три цикла похожи на стандартные циклы из языков программирования (С++, Pascal), а последний (foreach) на Perl. Рассмотрим в отдельности первые три операторов цикла, а последний будет рассмотрен в отдельном уроке. Отметим то, что каждый из циклов допускает вложенные циклы, то есть цикл внутри цикла.
Все типы циклов
-
Цикл — это конструкция, которая выполняет действие внутри себя (в теле цикла) заданное число раз (или пока выполняется какое-то условие).
-
Прежде всего надо сказать, что существует несколько видов циклов. Это :
Цикл со счетчиком (for);
Цикл с предусловием (while);
Цикл с постусловием (do-while);
Специальный цикл перебора массивов (foreach).
Каждый из видов циклов важен и нужен в разных ситуациях, а ситуации – как в жизни всегда разные!
Но для простого понимание, что же такое цикл, надо начать с цикла for.
-
Начинается цикл с английского слова для – for, но если говорить о наречии, то это значит в течение.
Далее первым стоит первое действие, далее проверяется условие -если условие выполняется, то выполняется тело чикла и действие
2. До тех пор, пока условие соблюдается. Как только условие не соблюдается, то цикл прекращается.
for (действие1; условие; действие2) { … цикл … }
Чтобы далеко не ходить – возьмем цикл for отчет начинать будем с нуля $i = 0 , циклов будет 10- $i и шаг будет плюс один $++
И получим первую строку программы цикла :
for ($i = 0; $i
Здесь следует отметить, что нужно представлять, некоторые обозначения, которые могут встречаться, (мы сделаем отдельную страницу, посвящённую обозначениям, их тупо нужно выучить!) к примеру:
$i++ — то же самое, что $i+=1, или $i = $i + 1.
Внутри фигурных скобок напишем тело цикла например самое простое вывод номера цикла : echo $i. «<br>»; // br — перенос строки
Итоговый листинг будет:
for ($i = 0; $i
{
echo $i. «<br>»;
}
Результат:
0123456789
for ($i = 10; $i > 0; $i—)
{
echo $i.'<br>’;
}
Результат:
10987654321
-
Следующий цикл к рассмотрению — это цикл foreach, который имеет такую структуру:
foreach (array key => value)
{
тело цикла
}
Не буду говорить общими фразами, о цикле foreach — это второй тип цикла, который я использую, кроме цикла for! Цикл for — это конечно классный простой цикл, в котором все понятно! Но некоторые вещи для него невозможны, ну или возможны, но придется наслаивать столько циклов внутри других циклов, что проще научиться пользоваться циклом foreach
Например для вывода ассоциативного массива — цикл foreach — самое то!
-
Этот тип массива вывели в
-
Здесь нужно опять отметить, что — этот пример задачи с циклом – одна из первых, которую я решал при изучении циклов! Задача была действительно сложной. Но я её успешно решил! Чего и вам желаю!
Для понимания работы цикла нужна задача, к примеру, вам нужно посчитать, сколько денег получит вкладчик, если положит н-ую сумму:
$balanse = 10000;
на счёт на 5 лет? Под проценты (5%):
$potsent = 1.05;
действие1 – обозначим, как year, поставим перед ней знак переменной и получится — $year.
Далее нам нужно условие – это 5 лет, то есть считать 5 раз, берём наше действие и ставим условие меньше-равно и получаем
$year <= 5;
И действие 2 — повторять начисление процентов с шагом в один год:
$year ++;
И далее идёт цикл. Берем ранее обозначенную сумму
$balanse
И умножаем на проценты
$potsent
У нас получилось:
$balanse = $balanse * $potsent
И далее нам нужно вывести на экран результат
echo $balanse ;
<?
$balanse = 10000;
$potsent = 1.05;
for ($year = 1; $year <= 5; $year ++)
{
$balanse = $balanse * $potsent;
echo $balanse . ‘<br>’;
}
?>
Результат:
105001102511576.2512155.062512762.815625
Вас может еще заинтересовать список тем : #PHP | #PHP_CYCLE | Последняя дата редактирования : 2020-02-28 07:03
//dwweb.ru/comments_1_5/include/img/hand_no_foto.png
no
no
Различные типы циклов в PHP
Циклы используются для выполнения одного и того же блока кода снова и снова, пока не будет выполнено определенное условие. Основная идея цикла состоит в том, чтобы автоматизировать повторяющиеся задачи в программе, чтобы сэкономить время и усилия. PHP поддерживает четыре различных типа циклов.
- while — перебирает блок кода, пока условие не станет истинным.
- do … while — блок кода выполняется один раз, а затем условие проверяется. Если условие истинно, выражение повторяется до тех пор, пока указанное условие истинно.
- for — перебирает блок кода, пока счетчик не достигнет указанного числа.
- foreach — проходит через блок кода для каждого элемента в массиве.
Цикл while в PHP
Оператор while будет циклически проходить по блоку кода, пока условие в операторе while будет равным true.
while(условие){ // Код который нужно выполнять }
Пример ниже создает цикл, который начинается с $i = 1. Цикл будет продолжать выполняться до тех пор, пока $i меньше или равен 3. Значение $i будет увеличиваться на 1 при каждом запуске цикла:
<?php $i = 1; while($i <= 3){ $i++; echo "Number " . $i . "<br>"; } ?>
Цикл do … while в PHP
Цикл do-while является вариантом цикла while, который оценивает условие в конце каждой итерации цикла. В цикле do-while блок кода выполняется минимум один раз, а затем условие оценивается, если условие истинно, цикл повторяется до тех пор, пока указанное условие истинно.
do{ // Код который выполнится как минимум 1 раз } while(условие);
В следующем примере определяется цикл, который начинается с $i = 1. Затем он увеличит $i на 1 и отобразит вывод. Затем условие оценивается и цикл продолжает выполняться, пока $i меньше или равно 3.
<?php $i = 1; do { $i++; echo "Number " . $i . "<br>"; } while($i <= 3); ?>
Разница циклов while и do … while
Цикл while отличается от цикла do-while одним важным моментом — с циклом while проверяемое условие проверяется в начале каждой итерации цикла, поэтому, если условное выражение имеет значение false, цикл никогда не будет выполнен.
С другой стороны, в цикле do-while цикл всегда будет выполняться один раз, даже если условное выражение ложно, поскольку условие оценивается в конце итерации цикла, а не в начале.
Циклы for в PHP
Цикл for повторяет блок кода, пока не будет выполнено определенное условие. Обычно он используется для выполнения блока кода определенное количество раз.
for(инициализация; условие; инкремент){ // Код который нужно выполнить }
Параметры цикла for имеют следующие значения:
- инициализация — используется для инициализации переменных счетчика, вычисляется один раз перед первым выполнением тела цикла.
- условие — в начале каждой итерации условие оценивается. Если оно принимает значение true, цикл продолжается, и вложенные команды выполняются. Если значение равно false, выполнение цикла заканчивается.
- инкремент — обновляет счетчик цикла новым значением, обычно выполняется в конце каждой итерации.
Пример ниже создает цикл, который начинается с $i = 1. Цикл будет продолжаться до тех пор, пока $i будет меньше или равно 3. Переменная $i будет увеличиваться на 1 при каждом запуске цикла:
<?php for($i=1; $i<=3; $i++){ echo "Number " . $i . "<br>"; } ?>
Цикл foreach в PHP
Цикл foreach обычно используется для перебора элементов массива (переводится как «для каждого»).
foreach($array as $value){ // Код который нужно выполнить }
В следующем примере демонстрируется цикл, который будет выводить значения данного массива:
<?php $colors = array("Red", "Green", "Blue"); // Проходим по всем элементам массива foreach($colors as $value){ echo $value . "<br>"; } ?>
Существует еще один синтаксис цикла foreach, который является дополнением первого.
foreach($array as $key => $value){ // Код который нужно выполнить }
Этот цикл используется для работы с ассоциативными массивами.
<?php $superhero = array( "name" => "Vasya Pupkin", "email" => "vasyapupkin@mail.com", "age" => 18 ); // Проходим по массиву foreach($superhero as $key => $value){ echo $key . " : " . $value . "<br>"; } ?>
В результате вы увидите это:
name : Vasya Pupkin email : vasyapupkin@mail.com age : 18
Выход из цикла в php Break и Continue
Break
Оператор break прерывает выполнение текущей итерации конструкций for, foreach, while, do-while или switch.
Обычно данный оператор используется без аргументов, но можно его применять и с аргументом — какое количество вложенных структур необходимо прервать. По умолчанию это значение 1, т.е. только ближайшая структура будет прервана.
Пример: в цикле, выводящем числа от 1 до 10, добавить оператор , чтобы последним выводимым числом было 6
Решение:
1 2 3 4 5 6 |
$i=1; while($i<=10){ echo $i." "; if ($i==6) break; $i++; }; |
Результат:
Рассмотрим пример с использованием аргумента в операторе .
Пример: В цикле, выводящем числа от 1 до 10, использовать два оператора : один из которых при определенном условии выходит из внутренней конструкции switch, а другой — выходит из и цикла
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$i=1; while($i<=15){ echo $i." "; switch ($i) { case 5 echo "Итерация 5<br />\n"; break 1; /* Выйти только из конструкции switch. */ case 10 echo "Итерация 10; выход <br />\n"; break 2; /* Выходим из конструкции switch и из цикла while. */ default break; } $i++; }; |
Результат:
Continue
Оператор continue используется в циклических структурах (и switch) для выхода из оставшейся части текущей итерации цикла.
Пример: В цикле, выводящем на экран числа от 1 до 10, необходимо ввести оператор таким образом, чтобы выводились только нечетные числа
Решение:
1 2 3 4 5 6 7 8 |
$i=; while($i<10){ $i++; if (!($i%2)) { // пропуск четных continue; } echo $i." "; }; |
Результат:
Задание php 4_4: при помощи цикла и оператора выводить все четные числа от 2 до 20
Задание php 4_5: проверить, есть ли в заданном числовом отрицательные числа (хотя бы одно). Если есть — выводить «да», если нет — выводить «нет». Выводить сообщение один раз
Цикл foreach
Цикл foreach не похож на все перечисленные. Он появился в PHP4, предназначен для перебора массивов. Разработчику не нужно ничего выдумывать для этого. Всё легко и просто:
/** * Цикл foreach следует понимать как «для каждого из». * Массив, обрабатываемый циклом, передается переменной, которая * доступна только внутри тела цикла. При желании можно обращаться * и к ключам массива. */ foreach(массив as элемент_массива) { тело_цикла; } foreach(массив as ключ_массива => элемент_массива) { тело_цикла; }
Принцип работы циклаforeach совсем не такой как у цикловfor, while иdo-while. Поэтому для неопытных разработчиков довольно непросто понять что именно с его помощью можно (и даже нужно) делать.
// Изменим уже знакомый нам массив. Сделаем его ассоциативным. $array = array( 'Яблоко' => 'фрукт', 'Картошка' => 'овощь', 'Арбуз' => 'ягода', 'Цветок' => 'растение', 'Вода' => 'жидкость', 'Ртуть' => 'металл', 'Кислород' => 'газ', 'Пшеница' => 'хлеб', 'Россия' => 'наша Родина', 'Москва' => 'столица нашей Родины', 'Ливень' => 'попадос' ); $i = 1; // Можем сделать так foreach($array as $v) { print "<br />".$i.". ".$v."."; $i++; } /* Получим такой вот неожиданный результат 1. фрукт. 2. овощь. 3. ягода. 4. растение. 5. жидкость. 6. металл. 7. газ. 8. хлеб. 9. наша Родина. 10. столица нашей Родины. 11. попадос. */ // А теперь сделаем иначе foreach($array as $k => $v) { print "<br />".$i.". ".$k." — это ".$v."."; $i++; } /* Теперь результат будет таким 1. Яблоко — это фрукт. 2. Картошка — это овощь. 3. Арбуз — это ягода. 4. Цветок — это растение. 5. Вода — это жидкость. 6. Ртуть — это металл. 7. Кислород — это газ. 8. Пшеница — это хлеб. 9. Россия — это наша Родина. 10. Москва — это столица нашей Родины. 11. Ливень — это попадос. */
В любом цикле можно использовать конструкции break или continue. Иногда не имеет смысл продолжать работу цикла или нужно перейти к следующей итерации.
$array = array( 'Яблоко' => 'фрукт', 'Картошка' => 'овощь', 'Арбуз' => 'ягода', 'Цветок' => 'растение', 'Вода' => 'жидкость', 'Ртуть' => 'металл', 'Кислород' => 'газ', 'Пшеница' => 'хлеб', 'Россия' => 'наша Родина', 'Москва' => 'столица нашей Родины', 'Ливень' => 'попадос' ); $i = 1; // Пример работы цикла с конструкцией continue foreach($array as $k => $v) { if($k != 'Кислород') continue; print "<br />".$i.". ".$k." — это ".$v."."; $i++; } /* Результат будет таким 1. Кислород — это газ. */ $i = 1; // Пример работы цикла с конструкцией break foreach($array as $k => $v) { if($k == 'Кислород') break; print "<br />".$i.". ".$k." — это ".$v."."; $i++; } /* Результат будет таким 1. Яблоко — это фрукт. 2. Картошка — это овощь. 3. Арбуз — это ягода. 4. Цветок — это растение. 5. Вода — это жидкость. 6. Ртуть — это металл. */