Материал предоставлен https://it.rfei.ru

Циклы for

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

В примере продемонстрирована возможность вывода таблицы умножения с использованием цикла for.

Пример. Вывод таблицы умножения на 12 из цикла for

<?php
for ($count = 1 ; $count <= 12 : ++$count)
     echo "Число $count, умноженное на 12. равно " . $count * 12 . "<br />";
?>

Как видите, весь код сведен к одной инструкции for, в которой содержится одна условная инструкция. И вот что из этого получается. Каждая инструкция for воспринимает три параметра:

  • выражение инициализации;
  • выражение условия;
  • выражение модификации.

Эти три выражения отделяются друг от друга точкой с запятой: for (выражение1 ; выражение2 ; выражение3). В начале первой итерации выполняется выражение инициализации. В нашем коде таблицы умножения переменная $count инициализируется значением 1. Затем при каждой итерации проверяется выражение условия (в данном случае $count <= 12), и выход из цикла осуществляется только в том случае, если результат вычисления условия будет TRUE. И наконец, в завершение каждой итерации выполняется выражение модификации. В случае с таблицей умножения значение переменной $count увеличивается на 1.

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

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

Пример. Цикл for из предыдущего примера с добавлением фигурных скобок

<?php
for ($count = 1 ; $count <= 12 ; ++$count)
{
     echo "Число $count, умноженное на 12, равно " . $count * 12;
     echo "<br />";
}
?>

Давайте сравним условия, при которых следует использовать циклы for c условиями, при которых следует использовать циклы while. Цикл for явно создается под отдельное значение, изменяющееся на постоянную величину. Обычно мы имеем дело с увеличивающимся значением — это похоже на то, что вам был передан перечень того, что выбрал пользователь, и от вас требуется обработать каждый его выбор по очереди. Но переменную можно видоизменять по вашему усмотрению. Более сложная форма инструкции for позволяет даже осуществлять со всеми тремя параметрами сразу несколько операций:

for ($i = 1, $j = 1 ; $i + $j < 10 ; $i++ , $j++)
{
     // ...
}

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

Несколько операторов внутри каждого параметра должны быть отделены друг от друга запятыми. Первый и третий параметры в предыдущем примере содержат по два оператора:

$i = 1, $j = 1 // Инициализация переменных $i и $j $i + $j < 1 // Условие окончания работы цикла
$i++ , $j++     // Модификация $i и $j в конце каждой итерации

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

Тогда при каких условиях следует отдавать предпочтение инструкциям while перед инструкциями for? Когда ваше условие не зависит от простого изменения переменной на постоянной основе. Например, инструкция while используется в том случае, если нужно проверить, не введено ли какое-то вполне определенное значение или не возникла ли какая-то конкретная ошибка, и завершить цикл сразу же, как только это произойдет.

Циклы do...whileПрекращение работы цикла