Do..While
Цикл DO..WHILE очень похож на WHILE за исключением того, что значение логического выражения проверяется не до, а после окончания итерации. Основное отличие в том, что DO..WHILE гарантировано выполнится хотя бы один раз, что в случае WHILE не обязательно.
Для циклов DO..WHILE существует только один вид синтаксиса:
$i = 0;do { print $i;} while ($i>0);Этот цикл выполнится один раз, так как после окончания итерации будет проверено значение логического выражения, а оно равно FALSE ($i не больше 0), и выполнение цикла завершится.
Опытные программисты на C может быть знакомы с иным использованием DO..WHILE, позволяющем прекратить исполнение блока операторов в середине путЈм внедрения его в цикл DO..WHILE(0) и использования оператора BREAK. Следующий код демонстрирует такую возможность :
do { if ($i < 5) { print "i is not big enough"; break; } $i *= $factor; if ($i < $minimum_limit) { break; } print "i is ok"; ...process i...} while(0);Не беспокойтесь, если вы не совсем поняли это. Вы можете программировать весьма мощные скрипты и без этой возможности.
FOR
Циклы FOR - наиболее мощные циклы в PHP. Они работают подобно их аналогам в C. Синтаксис цикла FOR :
FOR (expr1; expr2; expr3) statement
Первое выражение (expr1) безусловно вычисляется(выполняется) в начале цикла.
В начале каждой итерации вычисляется expr2. Если оно равно TRUE, то цикл продолжается и выполняются вложенный(е) оператор(ы). Если оно равно FALSE, то цикл заканчивается.
В конце каждой итерации вычисляется(исполняется) expr3.
Каждое из этих выражений может быть пустым. Если expr2 пусто, то цикл продолжается бесконечно (PHP по умолчанию считает его равным TRUE, как и С). Это не так бесполезно, как могло бы показаться, так как зачастую вам требуется закончить выполнение цикла используя оператор 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 также поддерживает альтернативный синтаксис FOR :
FOR (expr1; expr2; expr3): выражение; ...; endfor;
Другие языки используют оператор foreach для того, чтобы обрабатывает массивы или списки. PHP использует для этого оператор while и функции list() иeach() . Для примера смотрите документацию по этим функциям.
BREAK
VREAK прерывает выполнение текущего цикла.
$i = 0;while ($i < 10) { if ($arr[$i] == "stop") { break; } $i++;}