for
(PHP 4, PHP 5, PHP 7, PHP 8)
Цикл for
самый сложный цикл в PHP.
Он ведёт себя так же, как и в языке C. Синтаксис цикла
for
следующий:
Первое выражение (expr1)
всегда вычисляется (выполняется) только один раз в начале
цикла.
В начале каждой итерации оценивается выражение
expr2. Если оно принимает значение
true
, то цикл продолжается и выполняются вложенные операторы.
Если оно принимает значение false
, выполнение цикла заканчивается.
В конце каждой итерации выражение expr3
вычисляется (выполняется).
Каждое из выражений может быть пустым или содержать несколько
выражений, разделённых запятыми. В expr2 все
выражения, разделённые запятыми, вычисляются, но результат берётся из
последнего.
Если выражение expr2 отсутствует, это означает, что цикл
будет выполняться бесконечно. (PHP неявно воспринимает это значение как
true
, так же, как в языке C). Это может быть не так бесполезно, как вы
могли подумать, так как часто необходимо прервать цикл, используя
условный оператор break
вместо использования выражения в цикле for
,
которое принимает истинное значение.
Рассмотрим следующие примеры. Все они отображают числа
от 1 до 10:
Конечно, первый пример кажется самым хорошим (или, возможно,
четвёртый), но вы можете обнаружить, что возможность использовать пустые
выражения в циклах for
может стать удобной во многих
случаях.
PHP также поддерживает альтернативный синтаксис с двоеточием для циклов
for
.
Перебор массивов как показано ниже - это обычное дело для
многих пользователей.
Вышеприведённый код может работать медленно, так как размер массива вычисляется
в каждой итерации. Поскольку размер не меняется, цикл может быть легко оптимизирован
с помощью промежуточной переменной, в которую будет записан размер массива, вместо
повторяющихся вызовов функции count():