Циклы в PHP. Циклы Циклы foreach while for в php

  • 20.06.2020

Последнее обновление: 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 выполняться не будут.

На уроке будут рассмотрены операторы цикла php: цикл while php, цикл foreach, цикл do while и цикл со счетчиком for. Будут разобраны примеры выхода из цикла (в php — break и continue)

Синтаксис:

while (условие){ оператор 1; оператор 2; ... }

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

Рис. 4.1. Пример использования цикла While


Результат:

1 2 3 4 5 6 7 8 9 10

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

while (условие): оператор 1; оператор 2; ... endwhile;

Рис. 4.2. Пример альтернативного использования цикла While


Пример: Выводить на экран ряд чисел 4 7 10 13 16 19 22… Всего вывести 30 цифр. Использовать цикл While php


Решение:
1 2 3 4 5 6 $sum = 1 ; while ($i <= 30 ) { $sum += 3 ; $i ++; echo ($sum . " " ) ; }

$sum=1; while ($i<=30){ $sum+=3; $i++; echo ($sum." "); }

Результат:

4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94

Пример: Выводить степени двойки до значения 1024



Решение:

do { оператор 1; оператор 2; ... } while (условие);

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

Рис. 4.3. Пример использования цикла Do While


Результат:

1 2 3 4 5 6 7 8 9 10

Пример: Выводить на экран ряд чисел 4 7 10 13 16 19 22.. . Всего вывести 30 цифр



Решение:

for (начальное значение счетчика; условие продолжения цикла; изменение счетчика на каждой итерации) { оператор 1; оператор 2; ...; }

  • После служебного слова for в скобках через; обязательно указываются 3 параметра.
  • Цикл For в php может быть и без фигурных скобок, если в теле цикла присутствует только один оператор.

Рис. 4.4. Пример использования цикла For


Результат:

Привет!
Привет!
Привет!
Привет!
Привет!

  • В php для цикла for поддерживается альтернативный синтаксис:
  • for (начальное значение счетчика; условие продолжения цикла; изменение счетчика на каждой итерации) : оператор 1; оператор 2; ...; endfor;

Пример: Выводить в окно браузера числа от 1 до 10


Решение:
1 2 3 for ($i = 1 ; $i <= 10 ; $i ++ ) { echo $i . " " ; }

for ($i = 1; $i <= 10; $i ++) { echo $i." "; }

Результат:

Лабораторная работа:
Нарисовать таблицу умножения

Этап 1

  1. Создайте две числовые переменные cols и rows
  2. Присвойте созданным переменным произвольные значения в диапазоне от 1 до 10

Этап 2

  1. Используя циклы, отрисуйте таблицу умножения в виде HTML-таблицы на следующих условиях:
  • Число столбцов должно быть равно значению переменной cols
  • Число строк должно быть равно значению переменной rows
  • Ячейки на пересечении столбцов и строк должны содержать значения, являющиеся произведением порядковых номеров столбца и строки
  • Рекомендуется использовать циклы for
  • Этап 3

    • Значения в ячейках первой строки и первого столбца должны быть отрисованы полужирным шрифтом
    • Фоновый цвет ячеек первой строки и первого столбца должен быть отличным от фонового цвета таблицы. Сохраните файл.

    Дополните код:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 " ; for ($td = 1 ; ...; ... ) { if (... ) { echo "" ; } else { echo "" ; } } echo "" ; } ?>
    " , $tr * $td , "" , $tr * $td , "

    "; for($td=1; ...; ...){ if(...){ echo ""; }else{ echo ""; } } echo ""; } ?>
    ", $tr * $td, "", $tr * $td, "

    Количество элементов массива

    Для удобства работы с массивами часто используется функция count()

    Функция возвращает кол-во элементов массива

    count ($masiv ) ;

    Пример: Дан массив, состоящий из названий времен года. Необходимо вывести все элементы массива неизвестного размера


    Решение:
    1 2 3 4 5 6 7 8 9 $mas [$n ]" . "
    " ; } ?>

    "; } ?>

    Результат:

    Цикл 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 [ "name" ] = "Ivan" ; $user [ "login" ] = "root" ; $user [ "password" ] = "p@ssword" ; $user = "312-34-85" ; foreach ($user as $index => $value ) { echo "Индекс $index равен $value
    "
    ; }

    $user["name"]="Ivan"; $user["login"]="root"; $user["password"]="p@ssword"; $user="312-34-85"; foreach($user as $index =>$value){ echo "Индекс $index равен $value
    "; }

    Результат:

    Пример:

    1. Выводить приветствие для имен из списка
    2. Кроме приветствия выводить номера в списке
    1 2 3 4 5 6 7 8 9 10 $names = array ("Иван" , "Петр" , "Семен" ) ; // 1 задание foreach ($names as $val ) { echo "Привет, $val
    "
    ; } // 2 задание foreach ($names as $k => $val ) { echo "Привет, $val ! Ты в списке под номером $k
    "
    ; }

    $names = array("Иван","Петр","Семен"); // 1 задание foreach ($names as $val) { echo "Привет, $val
    "; } // 2 задание foreach ($names as $k => $val) { echo "Привет, $val ! Ты в списке под номером $k
    "; }

    Результат:

    Задание php 4_3: Дан массив, состоящий из названий дней недели. Вывести элементы, используя конструкцию foreach .

    Дополнительно: вывод должен быть в формате: понедельник – день 1 -й



    Лабораторная работа:
    Нарисовать (добавить) навигационное меню на странице, типа:

    <a href = "contact.php" > Contact</ a >

    Contact

    используя массив в качестве структуры меню.

    Алгоритм:

    1. Создайте ассоциативный массив $menu
    2. Заполните массив, соблюдая следующие условия:
    • Индексом элемента массива является пункт меню, например: Home , About , Contact
    • Значением элемента массива является имя файла, на который будет указывать ссылка, например: index.php , about.php , contact.html
  • Используя цикл foreach отрисуйте вертикальное меню, структура которого описана в массиве $menu
  • Эту статью я пишу для новичков, которые только начинают изучать PHP . Расскажу я в этой статье о всевозможных циклах в PHP , так как данной статьи у меня на сайте не было. Были только , но, несмотря на общую схожесть, это всё-таки не то. В PHP есть 4 вида циклов .

    1. WHILE
    2. DO-WHILE
    3. FOREACH

    Разберём их по порядку и начнём с самого популярного цикла в PHP (да и не только в PHP ) - это цикл FOR . Синтаксис у данного цикла следующий:

    For(Выражение_1; Выражение_2; Выражение_3) {
    операторы
    }

    Выражение_1 выполняется сразу же и безоговорочно, Выражение_3 выполняется после каждой итерации цикла. Выражение_2 - это проверка того, нужно ли продолжать цикл. Если результат выражения будет true , то начинается следующая итерация цикла, а если false , то цикл прекращает свою работу.

    Следующий тип цикла - это WHILE . Это более простой тип циклов, синтаксис которого следующий:

    While(Выражение) {
    операторы
    }

    Пока Выражение возвращает true , цикл будет работать, а как только появится false , он прекращает свою работу.

    Цикл DO-WHILE очень похож на WHILE , но с одним отличием. Условие выхода проверяется после выполнения итерации, а не до. Таким образом, данный цикл будет выполняться всегда хотя бы 1 раз. И вот синтаксис цикла DO-WHILE :

    Do{
    операторы
    }while(Условие);

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

    Foreach($array_or_object as $key => $value) {
    операторы
    }

    И, наконец, давайте применим все 4 типа циклов в PHP для перебора массивов :

    $list = array(5, 2, 3, 10, 12, 10);
    $array = array("a" => 1, "x" => 10, "m" => -5);
    for ($i = 0; $i < count($list); $i++) {
    echo $list[$i]."; ";
    }
    echo "
    ";
    $i = 0;
    while ($i < count($list)) {
    echo $list[$i]."; ";
    $i++;
    }
    echo "
    ";
    $i = 0;
    do {
    echo $list[$i]."; ";
    $i++;
    }while($i < count($list));
    echo "
    ";
    foreach ($array as $key => $value) {
    echo "$key = $value; ";
    }
    ?>

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

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

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

    Синтаксис цикла for выглядит следующим образом:

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

    1. В начале цикла выполняется инициализирующее выражение, оно всегда вычисляется (выполняется) только один раз в самом начале.
    2. Далее следует условное выражение. Перед началом каждой итерации вычисляется значение условного выражения (условие выполнения), если оно принимает значение TRUE, то тело цикла выполняется, если оно принимает значение FALSE , выполнение цикла завершается. Если при первой проверке условие оказывается ложным, тело цикла не выполнится ни разу.
    3. В самом конце, после выполнения действий в теле цикла обрабатывается последнее выражение (следующее выражение после условия). В данном случае это инкрементирующее выражение - оно увеличивает с помощью инкремента значение переменной-счетчика.

    Простой пример цикла for:

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

    Цикл for без частей заголовка

    Каждое из выражений в заголовке цикла for может отсутствовать.

    Если инициализация не нужна или происходит в другом месте, инициализирующее выражение не нужно. Перепишем немного предыдущий пример:

    Обратите внимание, символ точки с запятой обязателен, так как означает отсутствующее выражение. Отсутствие выражения условия эквивалентно расположению в условии значения TRUE .

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

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

    Несколько выражений в заголовке цикла for

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

    "; } ?>

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

    Вложенные циклы

    Так же как и условные операторы, циклы могут быть вложенными. Простой пример с одним уровнем вложенности:

    "; for ($j = 0; $j < 2; $j++) { echo "Вложенный цикл.
    "; } } ?>