ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Операторы управления. Часть Третья.


28-12-2009

3.4. Циклы
Циклы позволяют повторять строки программного кода после проверки выполнения определенного условия. Например, необходимо прочесть все строки из файла до его конца. Можно распечатать часть HTML-кода, повторив его десять раз, или запрограммировать три попытки подключения к базе данных, или прочесть данные из файла до его конца. Все эти действия программируются с помощью циклов.
Каждый цикл выполнения кода внутри цикла называется итерацией. Программный код внутри цикла повторяется до тех пор, пока не будет выполнено условие завершения. Язык PHP поддерживает три типа циклов, которые отличаются друг от друга тем, как они осуществляют итерации, какие действия выполняют перед началом цикла и когда осуществляется проверка условия завершения цикла, в начале или в конце цикла.
Оператор while
Простейшим циклом является цикл while. Выражение проверяется сразу же при первом удобном случае. Если это условие является ложным, программный блок просто пропускается, а если условие дает значение "истина", программный блок выполняется, после чего управление передается обратно наверх и опять проверяется условие. На рис. 3.4 показана структура оператора while.
Операторы управления
Цикл while имеет смысл в том случае, когда вы не знаете, сколько итераций должен сделать данный программный код, - так бывает, например, при чтении строк из файла или выборке из базы данных при помощи запроса. Для того чтобы узнать, как это работает, посмотрим на код, распечатывающий названия дней недели, начиная с текущего дня и заканчивая пятницей.
Цикл while (листинг 3.5) проверяет, чтобы дата, хранящаяся в переменной currentDate, не была пятницей (Friday). Если день является пятницей, выполнение цикла завершается и будет продолжено после закрывающих фигурных скобок. Но если сегодня не пятница, то распечатывается элемент списка с названием дня и к переменной currentDate прибавляется 24 часа. В этом месте достигается конец программного блока, и управление передается обратно в начало цикла.
Текущая дата снова проверяется на соответствие пятнице. Вот так постепенно будет достигнута пятница. Соответственно значение переменной currentDate станет пятницей, и цикл будет завершен. Но что будет, если запрограммировать что-то нелогичное, сравнивая, например, текущую дату со значением "Workday"? Дня недели с таким названием не существует, поэтому операция проверки всегда будет давать значение "истина". Это значит, что проверка date("l", $currentDate) != "Workday" всегда даст значение "истина". В результате получаем так называемый вечный цикл. Для достижения аналогичного результата лучше написать while(TRUE), что будет гораздо проще и прозрачнее.

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

Вечный цикл также называется неопределенным. Если вы вдруг обнаружите, что ваша страница загружается очень медленно, то вполне вероятно, что виной тому будет где-то запрограммированный вами бесконечный цикл. К счастью, машина PHP по умолчанию останавливает любой сценарий, если он занимает больше 30 секунд процессорного времени. Этот тайм-аут можно изменить с помощью функции set_time_limit. Иногда неопределенный цикл может создаваться преднамеренно, и его можно прервать где-то посередине выполнения. Для этих целей вполне может пригодиться оператор break.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Операторы управления. Часть Вторая. PHP. Операторы управления. Часть Четвёртая.