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