Оператор 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, "Массивы".
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операторы управления. Часть Пятая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операторы управления. Часть Четвёртая. | PHP. Операторы управления. Часть Шестая. |