Сегодня хочу объяснить немаловажную тему - это циклы в PHP. В первую очередь циклы в php один из самых часто используемых конструкций php программирования. Циклы нужны для вывода определенной, и даже неопределенной информации, когда задано условие для вывода на екран, различных операторов. Такие операторы называют телом цикла. А проход называют итерацией. Запоминать эти термины не обязательно, всегда есть справочники. А со временем они сами будут автоматически запоминаться, при длительной работе, и практике в веб программировании.
В PHP поддерживается 4 вида циклов:
Цикл с предусловием (while);
Цикл с постусловием (do-while);
Цикл со счетчиком (for);
Специальный цикл перебора массивов (foreach).
При использовании циклов используются и операторы break и continue .
Break - прерывает работу всего цикла;
Continue - прерывает работу только текущей итерации.
Далее рассмотрим каждый цикл PHP отдельно и подробно.
Цикл с предусловием while
Принципы работы цикла с предусловием while:
Вычисляется значение логического выражения.
Если значение истинно, выполняется тело цикла, в противном случае - переходим на следующий за циклом оператор.
Давайте рассмотрим сам синтаксис цикла на примере
Код PHP
while (логическое_выражение)
инструкция;
Телом цикла в нашем случае является инструкция. Тело цикла обычно состоит из многих операторов. Давайте для лучшего усвоения и наглядности приведу пример использования цикла while с предусловием
Код PHP
<?php
// Создем переменную $i с начальным значением 0
$i=0;
// В цикле задаем условие (к переменной i добавляй 1 и выводи до тех пор пока не будет больше 10)
while ($i++<10)
// Выводим на екран переменную i в цикле
echo $i;
// Выведит 12345678910
?>
Выведит слитно, но мы сейчас просто рассмотрим пример работы. а как выводить это ваше решение. Давайте разберем последовательность выполнения операций в цикле с предусловием while. В нашем случае условие $i++<10, при котором сначала проверяется условие. и лиш потом увеличивается значение на 1. А если записать условие таким образом ++$i<10, то сначала выполнится операция инкремента, тоесть увеличения, а затем проверки. После выполнения такого условия, мы получим в результат вот такую строку, 123456789. Как видите число 10 у нас исчезло. Рассмотрим еще вариант использования цикла
Код PHP
<?php
// Создем переменную с начальным значением 0
$i=0;
// В цикле задаем условие (Выводи пока переменная не сровнится со значением)
while ($i<10)
{
// Увеличим счетчик при проходе цикла на 1 можно записать и просто $i+1 или так
$i++;
// Выводим переменную в цикле
echo $i;
}
// Выведит 12345678910
?>
Как видим кода больше. а результат тотже. Вывод таков, что сначало необходимо все продумать. и чем все компактней тем лучше. Касательно данного примера со счетчиком. Если счетчик вставить после вывода переменной на экран, то результат будет немного иной, мы получим строку 0123456789. Но хочу заметить, что итераций всеравно осталось 10, только начало с 0.
Итерация - это выполение операторов внутри тела цикла.
Цикл с постусловием do-while
Отличается от цикла с постусловием while тем, что он проверяет значение выражения не до, а после прохождения тела цикла (итерации). При этом у этого цикла тело выполняется хотябы один раз. Другими словами, если в базе записей нет, то он выдаст ошибку, выбирать нечего, а если есть, то сработает нормально. Для примера рассмотрим синтаксис цикла с постусловием.
Код PHP
do
{
тело_цикла;
}
while (логическое_выражение);
После очередной итерации проверяется, истинно ли логическое_выражение, и, если это так, управление передается вновь на начало цикла, в противном случае цикл обрывается. Для этого цикла разработчики php не предусмотрели альтернативного синтаксиса, вероятно из-за того. что его мало, кто использует. Давайте приведу пример работы данного цикла.
Код PHP
<?php
// Создаем переменную счетчика теперь заметте со значением 1
$i = 1;
do {
// Выводим на экран
echo $i;
// Создаем в теле цикла условие и счетчик +1
} while ($i++<10);
?>
В итоге выведет то, что и выводил цикл while (12345678910). Но как видите значение счетчика начиналось не с 0, а с 1.
Следующий цикл со счетчиком for
Цикл со счетчиком используется для выполнения тела цикла определенное число раз. С помощью цикла for можно (и нужно) создавать конструкции, которые будут выполнять действия совсем не такие тривиальные, как простая переборка значения счетчика.
Синтаксис цикла for такой:
Код PHP
for (инициализирующие_команды; условие_цикла; команды_после_итерации)
{ тело_цикла; }
Цикл for начинает свою работу с выполнения инициализирующих_команд. Данные команды выполняются только один раз. После этого проверяется условие_цикла, если оно истинно (true), то выполняется тело_цикла. После того, как будет выполнен последний оператор тела, выполняются команды_после_итерации. Затем снова проверяется условие_цикла. Если оно истинно (true), выполняется тело_цикла и команды_после_итерации, и.т.д.
Код PHP
<?php
for ($i=0; $i<10; $i++) echo $i;
?>
Данный сценарий выводит: 0123456789
Есть вариант вывода строки 12345678910:
Код PHP
<?php
for ($i=0; $i++<10;) echo $i;
// Выводит 12345678910
?>
В данном примере мы обеспечили увеличение счетчика при проверке логического выражения. В таком случае нам не нужны были команды, выполняющиеся после итерации.
Если необходимо указать несколько команд, их можно разделить запятыми, пример:
Код PHP
<?php
for ($i=0, $a=0; $i<10; $i++, $a++) echo $i;
// Выводит 0123456789
?>
Давайте приведу еще один пример использования цикла for посложней и практичней смотрим;
Код PHP
for($i=0,$j=0,$k="Точки"; $i<10; $j++,$i+=$j) { $k=$k."."; echo $k; }
// Выводит Точки.Точки..Точки...Точки....
Рассмотренный пример (да и вообще любой цикл for) можно реализовать и через while, только это будет выглядеть не так изящно и лаконично.
Для цикла for имеется и альтернативный синтаксис:
Код PHP
for(инициализирующие_команды; условие_цикла; команды_после_итерации):
операторы;
endfor;
Цикл перебора массивов foreach
Данный цикл предназначен для перебора массива. Данный цикл появился в PHP4. Для примера рассмотрим синтаксис;
Синтаксис цикла foreach выглядит следующим образом:
Код PHP
foreach (массив as $ключ=>$значение)
команды;
Здесь команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=>значение оказывается в переменных $ключ и $значение. Приведем пример работы цикла foreach:
Код PHP
$значение["ключ"] = "значение";
$names["Петров"] = "Борис";
$names["Волков"] = "Сергей";
$names["Макаров"] = "Федор";
foreach ($names as $key => $value) {
echo "<b>$value $key</b><br>";
}
В результате получаем следующее
Ключ Значение
Борис Петров
Сергей Волков
Федор Макаров
Давайте рассмотрим и другую форму записи цикла foreach. Пример;
Код PHP
foreach (массив as $значение)
команды;
В этом случае доступно лишь значение очередного элемента массива, но не его ключ. Это может быть полезно, например, для работы с массивами-списками:
Код PHP
$значение[] = "значение";
$names[] = "Борис";
$names[] = "Сергей";
$names[] = "Федор";
foreach ($names as $value) {
echo "<b>$value</b><br>";
}
Внимание: Цикл foreach работает не с исходным массивом, а его копией. Это означает, что любые изменения, которые вносятся в массив, не могут быть "видны"в теле цикла. Что позволяет, например, в качестве массива использовать не только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет вызвана всего один раз - до начала цикла, а затем работа будет производиться с копией возвращенного значения). На этом публикацию завершаю. Подробнее о циклах в php смотрите в справочниках.