Оператор for
Строго говоря, в цикле for нет особой необходимости. Любой цикл for можно создать с помощью цикла while. То, что может предложить цикл for, не несет в себе какой-то принципиально новой функциональности. Это просто традиционная структура построения циклов. Большинство циклов использует в работе переменную счетчика, который считает обрабатываемые итерации до тех пор, пока не будет достигнут его максимум.
Представим, что вам требуется пересчитать числа с 1 и до 10. При использовании оператора while некой переменной необходимо присвоить значение 1. После этого необходимо задать цикл while, который бы проверял значение счетчика на равенство или меньше 10. В конце программного блока этот счетчик должен увеличиваться на единицу. Проблема здесь заключается в том, что очень просто забыть это сделать. И в результате получим бесконечный цикл. Оператор for позволяет выполнить все эти действия в одной строке. В операторе for выполняются три операции: инициализация выражения, логическое выражение продолжения и выражение инкремента. На рис. 3.5 изображен цикл for.
Операторы управления
 При первом прохождении выполняется выражение инициализации. Обычно это присвоение переменной значения 0 или 1. При всех последующих прохождениях, подобно тому, как это делается с оператором while, выполняется логическая проверка. И если эта проверка дает значение FALSE, управление сразу переходит за пределы программного блока, в противном случае блок выполняется. Перед следующей проверкой условия выполняется выражение инкремента. Таким образом, вся информация, необходимая для управления работой цикла, компактно располагается в одной строке, что позволяет хорошо проанализировать все итерации. 
j Листинг 3.10. Типичный цикл for_
<?php
for($counter = 1; $counter <= 10; $counter++)
{
print("Счетчик равен $counter<br>n");
}

В листинге 3.10 представлен простейший цикл for. Большинство циклов for выглядит аналогично листингу 3.10. В них используются счетчики, инкрементируемые с шагом 1. Но в принципе по необходимости оператор for позволяет использовать и более сложные выражения. Инициализирующая часть оператора позволяет задавать список значений, разделенный запятыми. Это значит, что он может использоваться для задания одной или нескольких переменных. Эта часть может быть вообще пропущена. В листинге 3.11 приведен код из листинга 3.5, переделанный для работы с циклом for. Для удобства чтения первая строка оператора for разбита на подстроки, и это позволит лучше увидеть три части. Несмотря на то что оператор for удлинился и выглядит сложнее, на самом деле он не очень отличается от такого же оператора, представленного в листинге 3.9. В этом случае переменной currentDate присваивается некое начальное значение, которое проверяется на соответствие условию завершения цикла, после чего к значению добавляется приращение, равное не просто 1, а количеству секунд в дне.

| Листинг 3.11. Использование цикла for для печати названий дней недели
<?php
/*
** Напечатать какой- нибудь поясняющий текст
*/
print("До пятницы осталось (дней):^");
print("<ol>n");
for($currentDate = date("U");
date("l", $currentDate) != "Friday";
$currentDate += (60 * 60 * 24))
{
/*
** Распечатать название дня недели
*/
print("<li>" . date("l", $currentDate) . "</li>n");
}
print("</ol>n");
?>

Оператор foreach
Оператор foreach, имеющийся в арсенале PHP, реализует формализованный подход обеспечения итераций с применением массивов. О нем речь пойдет подробнее в главе 5, "Массивы". Массив - это набор значений, на которые можно ссылаться с помощью ключей. Оператор foreach делает выборку значений из массива. Как и любая другая циклическая структура, оператор foreach может иметь простой или сложный оператор, выполняющийся при каждой итерации цикла (рис. 3.6). 
Операторы управления
Оператор foreach ожидает массив, ключевое слово as и определение переменных, которые присваиваются каждому элементу. Если после ключевого слова as следует одно значение, как, например, foreach($array as $value) , то на каждой итерации цикла переменной value будет присвоено значение последующего элемента массива. При создании оператора foreach можно также использовать индекс элемента массива: foreach($array as $key=>$value). К этому оператору мы еще вернемся в главе 5, "Массивы".