После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-06-26
Основы PHP → Циклы
Как работают циклы, Виды циклов

Циклы позволяют многократно выполнять блок кода. Это необходимо для решения множества задач. Например, перебор записей, полученных из базы данных, построчное чтение файла или обход элементов массива. В РНР есть четыре типа циклов: while , do..while , for и foreach . Первые три описываются далее, а foreach — при обсуждении массивов далее...

Цикл while

Конструкция while представляет собой простейший оператор цикла. Блок операторов выполняется, пока верно условие.

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

Рассмотрим работу цикла подробнее:

  1. Проверка условия.
  2. Если оно истинно, выполнение операторов; если ложно — выход из цикла.
  3. Переход к шагу 1.

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

Рассмотрим простой пример вывода чисел от 1 до N:

<?php
$n = 10;
$i = 1;
while ($i <= $n)
{
   echo "$i<br/>";
   $i++;
}
?>

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

Цикл do..while

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

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

Рассмотрим работу цикла:

  1. Выполнение блока операторов.
  2. Проверка условия.
  3. Если оно истинно, переход к шагу 1; если ложно — выход из цикла.

В примере ниже единица будет выведена, даже если N = 0:

<?php
$n = 10;
$i = 1;
do
{
   echo "$i<br/>";
   i++;
} while ($i <= $n)
?>

Цикл do..while используют достаточно редко ввиду его громоздкости и плохой читаемости. Лучше слегка изменить алгоритм (от чего он, скорее всего, выиграет) и применить for или while.

Цикл for

Цикл for — шедевр лаконичной организации кода, пришедший из языка Си. Конструкция позволяет одной строкой полностью определить поведение цикла:

for (Выражение1; Выражение2; Выражение3)
{
   Операторы
}

Выражение1 вычисляется перед началом цикла. Обычно в нем инициализируется управляющая переменная. Выражение2 вычисляется в начале каждой итерации цикла. Это выражение ведет так же, как условие цикла while, если значением Выражения2 оказывается true, цикл продолжается, иначе — останавливается. Выражение3 вычисляется в конце каждой итерации и, как правило, используется для изменения значения управляющей переменной цикла.

Ход выполнения цикла:

  1. Выполнение Выражения1 .
  2. Проверка Выражения2 .
  3. Если оно истинно, переход к шагу 4; если ложно — выход из цикла.
  4. Выполнение блока операторов.
  5. Выполнение Выражения3 .
  6. Переход к шагу 2.

Рассмотрим тот же пример вывода чисел от 1 до N:

<?php
$n = 10;
for ($i = 1; $i <= $n; $i++)
{
   echo "$i<br/>";
}
?>

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

Так же, как в Си и других языках, допускается не указывать одно или более выражений (если не указано Выражение2, считается, что оно true). Цикл while всегда можно заменить циклом for.

Следующие две конструкции эквивалентны:
Вариант 1:

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

Вариант 2:

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

Бесконечный цикл, операторы выхода из цикла и прерывания итерации цикла

Бесконечным называется цикл такого вида:

while (true)
{
   ...
}
//Или такого, что одно и то же:
for (;;)
{
   ...
}

Для выхода из цикла можно использовать оператор break:

<?php
$n = 10;
$i = 1;
while (true)
{
   echo "$i<br/>";
   $i++;

   if ($i > $n)
      break;
}
?>

Оператор break мгновенно завершает выполнение цикла. Если же нужно закончить текущую итерацию цикла и вернуться к проверке его условия, можно воспользоваться оператором continue. Следующий пример демонстрирует вывод нечетных чисел от 1 до N:

<?php
$n = 10;

for ($i = 1; $i <= $n; $i++)
{
   if ($i % 2 == 0)
      continue;

   echo "$i<br/>";
}
?>

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

549
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока