Внимание! это - авторская информация, защищенная законом об авторских правах. Но вы МОЖЕТЕ размещать данные тексты у себя на сайте, при условии размещения с текстом активной ссылки на первоисточник и указания автора:
Циклы в программировании – это повторяющиеся несколько раз операции.
Начало (точка отсчета) указывается в начале цикла, а длительность его
выполнения ограничивается каким-либо условием. Примером цикла может служить
копирование нескольких файлов. Алгоритм выполнения этого задания можно описать
так: установить счетчик скопированных файлов в ноль, скопировать файл,
проверить закончились файлы или нет, если нет - увеличить счетчик скопированных
файлов, вернуться к началу цикла (опять скопировать файл), если да – закончить
цикл. Теперь рассмотрим, как циклы реализуются в синтаксисе РНР.
<?php
$i = 0;
$n = 10;
while ($i <= $n):
echo $i.”<br>\n”;
$i++;
endwhile;
?>
Смысл скрипта очень прост. Присваиваем переменной $i
значение, соответствующее началу цикла, а переменной $n – значение конца цикла.
Далее открываем цикл оператором WHILE ( ), и внутри его скобок описываем
условие, при выполнении которого цикл будет продолжать свою работу. В нашем
случае выполнение не прервется, пока $i <= $n. Как только это условие будет
нарушено, управление будет передано следующей за циклом операции РНР. Внутри
цикла могут быть любые команды РНР (разделенные между собой как обычно – точкой
с запятой).
Только нужно следить за тем, что бы переменная $i,
используемая в цикле, была увеличена (и совсем не обязательно на единицу),
иначе цикл станет бесконечным, и интерпретатор РНР будет выполнять его, пока не
закроется сессия (окно браузера). Оператор ENDWHILE означает конец цикла.
Скрипт, описанный здесь, выводит на экран браузера цифры,
начиная с 0 до 10. Причем цифры будут выведены в столбик, так как после вывода
на экран значения переменной $i мы выводит HTML-тег перевода строки <br>.
После него идет перевод строки для кода, переданного клиенту (его можно
посмотреть, выбрав просмотр в виде HTML в меню Вашего браузера). Это не
обязательно, но таким образом достигается удобочитаемость кода.
Для примера я привожу еще один вариант выполнения
указанной выше задачи, но уже гораздо более правильно в смысле чистоты кода и
скорости выполнения.
<?php
$i = 0;
while ($i <= 10)
{
echo $i++.”<br>\n”;
}
?>
Удивительно, но эти два примера абсолютно идентичны в
смысле результата. Но сам скрипт практически уместился в одну строчку! Разница
– в стиле применения оператора цикла и в том, что переменная цикла выводится на
экран одновременно с увеличением. И в этом – вся прелесть программирования. Всегда
есть способ лучше, и порой очень трудные задачи решаются буквально несколькими
строчками кода. Иногда бывает что-то простое сделать очень трудно, а сложное –
легко. Никогда не стоит останавливаться на уже достигнутом, а пробовать
применять другие алгоритмы, варианты и решения.
Вот Вам еще один подобный вариант решения. Он основан на
применении конструкции РНР DO…WHILE. Это тоже цикл, но отличается он от просто
WHILE тем, что значение логического выражения проверяется не до (как в случае с
WHILE), а после окончания работы операторов, включенных в сам цикл. Таким
образом, DO…WHILE гарантированно будет выполнен хотя бы один раз, что в случае
с WHILE совсем не обязательно. Ведь если условие есть ложь, управление сразу
будет передано дальше. Для циклов DO..WHILE существует только один вид синтаксиса:
<?php
$i = 0;
do
{
echo $i.”<br>\n”;
$i++;
}
while ($i <=10);
?>
Казалось
бы, достаточно вариантов, но это не все
- существует еще несколько вариантов цикла. И, как правило, именно они и
используются программистами. Циклы FOR - наиболее мощные циклы в PHP. Они
работают подобно их аналогам в языке программирования C. Синтаксис цикла FOR:
FOR (expr1; expr2; expr3)
statement
Первое
выражение (expr1) безусловно, вычисляется (выполняется) в начале цикла. В
начале каждой итерации (проход цикла) вычисляется expr2. Если оно равно TRUE
(истина), то цикл продолжается и выполняется вложенный(е) оператор(ы). Если оно
равно FALSE (ложь), то цикл заканчивается. В конце каждой итерации вычисляется
(исполняется) expr3. Каждое из этих выражений может быть пустым. Если expr2
пусто, то цикл продолжается бесконечно (PHP по умолчанию считает его равным
TRUE, как и в языке С). Это не так бесполезно, как могло бы показаться, так как
зачастую требуется закончить выполнение цикла, используя оператор BREAK в сочетании
с логическим условием вместо использования логического выражения в FOR. Если
внутри цикла (любого) встречается этот оператор (BREAK), цикл безусловно
прекращает выполнение итерации, и управление передается следующей за циклом
команде. Если встречается оператор CONTINUE – управление передается на начало
следующего ближайшего цикла. Для примера посмотрим, как можно еще реализовать
вывод на экран пользователя список чисел. Не забывайте про переход из HTML в
PHP.
/* пример 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++) ;
Так что не говорите потом, что у Вас не было выбора :-).
На примере тривиальной задачи мы рассмотрели, как РНР позволяет разными
способами достичь одной цели. Как правило, на практике применяется наиболее
подходящая конструкция, но часто в этом нет никакой необходимости, достаточно
использовать самый простой и логичный вариант.
Внимание! это - авторская информация, защищенная законом об авторских правах. Но вы МОЖЕТЕ размещать данные тексты у себя на сайте, при условии размещения с текстом активной ссылки на первоисточник и указания автора:
"CSS. Каскадные таблицы стилей. Подробное руководство" показывает, как реализовать на практике все возможности каскадных таблиц стилей для стандартов CSS2 и CSS2.1. Множество...
Тодд Томлинсон
Многие из большинства хорошо узнаваемых веб-сайтов на планете используют в качестве платформы для доставки контента и функциональности своим посетителям систему Drupal. С выходом...
Джеймс Риз
Рассмотрена современная бизнес-модель, в которой вычислительные ресурсы предоставляются пользователям как услуги в сети Интернет. Дана практика разработки Web-приложений для...
Дж. Гарретт
По-настоящему эффективный сайт должен служить вашим стратегическим целям, одновременно удовлетворяя потребности ваших пользователей. Даже самый интересный контент и самые...