for
for
Циклы for это самые сложные циклы PHP. Они ведут себя так же, как
их аналоги из C.
Синтаксис цикла for таков:
for (expr1; expr2; expr3) statement |
Первое выражение (expr1) вычисляется (выполняется) один раз и безусловно в начале выполнения цикла.
При начале каждой итерации вычисляется expr2. Если оно вычисляется в TRUE, цикл продолжается и выполняется вложенный (-ые) оператор (-ы). Если оно вычисляется в FALSE, выполнение цикла прекращается.
В конце каждой итерации вычисляется (выполняется) expr3.
Каждое из выражений может быть пустым. Пустое expr2 означает, что цикл должен выполняться бесконечно (PHP неявно предполагает, что это условие TRUE, как в C). Это может быть не так бессмысленно, как может показаться, поскольку часто бывает необходимо закончить цикл оператором break вместо использования проверки выражения-условия цикла for.
Рассмотрим следующие примеры. Все они выводят числа от 1 до 10:
/* пример 1 */ for ($i = 1; $i <= 10; $i++) { print $i; } /* пример 2 */ for ($i = 1;;$i++) { if ($i > 10) { break; } print $i; } /* пример 3 */ $i = 1; for (;;) { if ($i > 10) { break; } print $i; $i++; } /* пример 4 */ for ($i = 1; $i <= 10; print $i, $i++); |
Конечно, первый пример кажется самым привлекательным (или, возможно, четвёртый), но вы можете обнаружить, что возможность использовать пустые выражения в циклах for оказывается удобной во многих ситуациях.
PHP также поддерживает "синтаксис colon/с двоеточием" для циклов for.
for (expr1; expr2; expr3): statement; ...; endfor; |
В других языках имеется оператор foreach для прохода по элементам массивов или хэшей. В PHP 3 такой конструкции нет; а в PHP 4 - есть (см. foreach). В PHP 3 вы может комбинировать while с функциями list() и each() для получения того же эффекта. См. примеры в документации по этим функциям.