Вложенные циклы php. Циклы в PHP

987

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

Цикл while

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

"; $i++; } ?>

Попробуйте запустить этот кусок кода. Цикл посчитает до 4 , так как принимаемые переменной значения будут не больше 5 . Каждый раз, когда цикл выполняет итерацию, мы добавляем 1 к значению $ i , а также выводим текущее значение. Независимо от того, какое условие вы хотите разместить в скобках оператора цикла PHP , оно должно оценивать Булево значение, т.е. истина (true ) или ложь (false ).

Цикл do-while

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

Вот пример, показывающий как раз такое поведение:

"; $i++; } while($i < 0); ?> ?>

С обычным циклом while пользователю ничего бы не вывелось, потому что $i равно 0 , и, следовательно, условие не выполняется. С оператором цикла PHP do-while мы гарантированно получаем одну итерацию. Впоследствии PHP «понимает », что условное выражение не является истинным (true ) и выходит из цикла.

Цикл for

Один из наиболее распространенных циклов в PHP . Ниже приведен пример использования цикла for :

"; } ?>

Он произведет точно такой же результат, что и предыдущий цикл while , но с меньшим количеством строк кода. Переменная-счетчик инициализирована, проверена и увеличена в той же строке: сначала мы объявляем ее и присваиваем ей значение, далее пишем выражение выполняющее проверку, и затем увеличиваем (или уменьшаем ). Оператор цикла PHP for подходит для всех ситуаций, когда вы хотите, отслеживать количество итераций.

Цикл foreach

В PHP цикл foreach используется для перебора массива. Фактически, он работает только с массивами, и PHP сгенерирует ошибку при попытке использовать его с переменной, которая не содержит массив. Цикл foreach доступен в двух видах — вот пример первого из них:

"; ?>

foreach разработан для того, чтобы работать только с массивами, которые в свою очередь делают весь процесс проще. В каждой итерации переменной $animal присвоено значение из массива, что дает нам легкий доступ к нему. Этот небольшой фрагмент кода выведет список элементов (в данном случае животных ) массива.

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

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

Цикл for

Синтаксис цикла for следующий.

For(инициализация; условие; команды_после_итерации) { тело_цикла; }

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

// Массив значений $array = array("Яблоко", "Картошка", "Арбуз", "Цветок", "Вода", "Ртуть", "Кислород", "Пшеница", "Россия", "Москва", "Ливень"); // Условие цикла звучит так: пока счетчик не достигнет значения, равного количеству // элементов массива, тело цикла выполняется for($i = 0; $i < count($array); $i++) { print "
".($i + 1).". ".$array[$i]."."; } /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

Так как счетчик $i начинался с нуля, при каждой итерации мы к его значению прибавляли единицу, чтобы список выглядел более привычным. После каждой итерцации значение счетчика увеличивалось на единицу, и когда оно достигло 11, цикл остановился. Теперь давайте взглянем на цикл do-while.

Цикл do-while

Цикл do-while отличается тем, что он работает по постусловию. Это означает, что код, заключенный в теле цикла, выполнится как минимум один раз. Синтаксис цикла такой:

Do { тело_цикла; } while(условие);

Этот цикл используется довольно редко при веб-программировании , но может он вам и понадобится в ваших сценариях.

// Уже знакомый нам массив $array = array("Яблоко", "Картошка", "Арбуз", "Цветок", "Вода", "Ртуть", "Кислород", "Пшеница", "Россия", "Москва", "Ливень"); // Запускаем цикл $i = 1; do { print "
".$i.". ".$array[($i - 1)]."."; } while($i++ < count($array)); /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

Обратите внимание на отличие того, что мы выводим на экран в этом цикле от цикла for . Так как код в теле цикла do-while исполняется как минимум один раз, начальное значение счетчика было задано нулевым. Как работает цикл… выполняется код, затем проверяется условие. При первой итерации счетчик имел значение 1. После итерации единица оказалась меньше 11 (количества элементов). При последней итерации счетчик имел значение 11, а это никак не меньше 11. Цикл остановился. На do-while очень похож цикл while.

Цикл while

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

While(условие) { тело_цикла; }

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

$array = array("Яблоко", "Картошка", "Арбуз", "Цветок", "Вода", "Ртуть", "Кислород", "Пшеница", "Россия", "Москва", "Ливень"); $i = 1; while($i++ <= count($array)) { print "
".$i.". ".$array[($i - 1)]."."; } /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

Цикл while для начинающих разработчиков наиболее прост и понятен.

Цикл foreach

Цикл foreach не похож на все перечисленные. Он появился в PHP4, предназначен для перебора массивов. Разработчику не нужно ничего выдумывать для этого. Всё легко и просто:

/** * Цикл foreach следует понимать как «для каждого из». * Массив, обрабатываемый циклом, передается переменной, которая * доступна только внутри тела цикла. При желании можно обращаться * и к ключам массива. */ foreach(массив as элемент_массива) { тело_цикла; } foreach(массив as ключ_массива => элемент_массива) { тело_цикла; }

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

// Изменим уже знакомый нам массив. Сделаем его ассоциативным. $array = array("Яблоко" => "фрукт", "Картошка" => "овощь", "Арбуз" => "ягода", "Цветок" => "растение", "Вода" => "жидкость", "Ртуть" => "металл", "Кислород" => "газ", "Пшеница" => "хлеб", "Россия" => "наша Родина", "Москва" => "столица нашей Родины", "Ливень" => "попадос"); $i = 1; // Можем сделать так foreach($array as $v) { print "
".$i.". ".$v."."; $i++; } /* Получим такой вот неожиданный результат 1. фрукт. 2. овощь. 3. ягода. 4. растение. 5. жидкость. 6. металл. 7. газ. 8. хлеб. 9. наша Родина. 10. столица нашей Родины. 11. попадос. */ // А теперь сделаем иначе foreach($array as $k => $v) { print "
".$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 "
".$i.". ".$k." — это ".$v."."; $i++; } /* Результат будет таким 1. Кислород — это газ. */ $i = 1; // Пример работы цикла с конструкцией break foreach($array as $k => $v) { if($k == "Кислород") break; print "
".$i.". ".$k." — это ".$v."."; $i++; } /* Результат будет таким 1. Яблоко — это фрукт. 2. Картошка — это овощь. 3. Арбуз — это ягода. 4. Цветок — это растение. 5. Вода — это жидкость. 6. Ртуть — это металл. */

На уроке будут рассмотрены операторы цикла 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 , как и в других языках, делятся на несколько типов:

    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

    Эту статью я пишу для новичков, которые только начинают изучать 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; ";
    }
    ?>

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