Услуги
Работы
Решения
Контакты
 

Flash

Домены

Правила делегирования доменов

Правила домену .UA

Хостинг

Сетевая безопасность

Apache

Web-Технологии

TCP/IP

Программирование для Web

.NET

PHP

Операционные системы

Windows

Раскрутка и реклама

Поисковики

PhotoShop

Базы данных

Веб-Дизайн

Теория



Циклы Если бы не было циклов

13 /10, 2005 

Если бы не было циклов, то програмирование было бы достаточно скучным занятием. Циклы позволяют
выполнять определённый код указаное количество раз, или же до тех пор, пока не выполнится
какое-то условие. В языке PHP есть два типа циклов :
while и for (такие циклы присущи не только
PHP, они присутствуют в подавляющем большинстве языков программирования). Циклы
while проверяют условия перед или после каждого прохода (повторения) цикла, и выполняется до тех пор, пока
условие не выполняется. В цикле for, перед началом выполнения, указывается количество проходов
(повторений), которое не может быть изменено в процессе выполнения цикла.

Цикл while

Синтаксис этого цикла похож на синтаксис оператора
if.

while(условие) 
{
...код...
}

Условие цикла while относится к логическому типу. Если значение становится ложным(false), то
код в фигурных скобках пропускается. Если true - код выполняется. Код выполняется пока
интерпретатор не встречает закрывающую фигурную скобку }, затем услови проверяется снова, и
если оно истинно, то цикл повторяется. Таким образом цикл повторяется до тех пор, пока
выполняется его условие. Обратите внимание на то, что условиепроверяется каждый раз перед новым
проходом (повтором), поэтому если условие будет удовлетворено уже в середине кода, то код всё
равно выполнится до конца. Если нужно досрочно выйти из цикла, используйте оператор
break.

$i=11;
while(--$i
{
if(моя_функция($i) ==
"error"
{
break; //остановить цикл
}
++$counter; //счётчик проходов цикла
}

Если функция моя_функция() не вернёт никакой ошибки, то цикл будет выполняться 10 раз, до тех
пор, пока значение $i не станет равным нулю (Ноль возвращает значение "false"). Если функция
моя_функция() вернёт ошибку, то выполнится оператор break и выполнение цикла прекратится.
Иногда возникает необходимость проскочить один или несколько проходов цикла и перейти к
следующему, не останавливая выполнение цикла в целом. Для этого используется оператор continue.

$i=11;
while(--$i
{
if(моя_функция($i) ==
"error"
{
continue; //перейти к следующему проходу не увеличивая значение 
счётчика $counter.

}
++$counter;
}

Этот код также выполняется 10 раз, если моя_функция() не вернёт никакой ошибки. Но в противном
случае цикл не останавливается, а сразу переходит к следующему проходу, не изменяя значение
счётчика $counter. Если после этого значение переменноц $i всё ещё не равно нулю, цикл
выполняется далее как и раньше.

Цикл do...while

Цикл do...while аналогичен циклу while, только условие здесь проверяется в конце каждого
прохода. ВНИМАНИЕ: цикл do...while
ВСЕГДА выполняется как минимум один раз :

echo("n");

Выполняя этот код, ноль всегда будет выводиться, как один из элементов. Количество остальных 
элементов будет зависеть от значения переменной $amount. 

Циклы while и do...while часто используются с операторами инкремента(увеличения) и
декремента(уменьшения), для указания количества проходов цикла. Цикл while также очень часто
используется при чтении данных из базы данных, строк из файлов, элементов из массивов(об этом в
другой статье).

Цикл for

Синтаксис цикла for немного сложнее цикла
while, но часто использование этого цикла приемлемее
нежели while.

for($i=1; $i<11;
++$i
{
echo("$i

n"
); // выводятся числа от 1 до 10

В следующих за ключевым словом for круглых скобках указываются 3 выражения, разделяемые точкой
с запятой. Первому присваевается счётчику проходов цикла. Это выражение выполняется только при
первом проходе. Следующее выражение имеет логический тип, и проверяется при каждом проходе
цикла. Если его значение true, цикл продолжает повторения, если
false, то выполнение цикла останавливается. Третье выражение выполняется в конце каждого рохода цикла и чаще всего
используется для уменьшения или увеличения переменной цикла.

Среднее выражение чаще всего сравнивает переменную цикла с каким-то ранее установленым 
значением, но так бывает не всегда. В примере ниже представлен немного другой вариант 
использования.

for($i=1; моя_функция($i) !=
"ошибка"; ++$i
{
// выполняется код, пока моя_функция($i) не возвращает ошибку
}

То же самое можно сделать используя цикл while. 

$i=1;
while (моя_функция($i) !=
"ошибка";) 
{
// выполняется код, пока моя_функция($i) не возвращает ошибку
++$i;
}

В принципе не существует такоц задачи, которую можно выполнить используя цикл
for, но нельзя выполнить используя цикл while. Но чаще цикл
for выглядит более компактным и организованым.

Как и в других Си подобных языках, в PHP разрешается (хотя и редко встречается) оставить одно 
или более из трёх выражений пустыми.

for( ; ; ) 
{
if(моя_функция() ==
"стоп") break;

Если логическое выражение не указано, то по умолчанию возвращается
true. Это может привести к зацикливанию, т.е. создать бесконечный цикл, если не использовать
break, return или exit. несомненно, причина не использовать какое-либо из 3 выражений , возникает довольно-таки редко.

Совет :
Всегда для начала убедитесь что условие цикла логически правильно и не приведёт
к зацикливанию!

МОРОЗ

Комментарии


Имя:

е-mail:

Читать в этом разделе


PHP. Полезные скрипты (часть 2)   13 /10, 2005 
Циклы Если бы не было циклов   13 /10, 2005 
А сколько же пользователей на сайте?   13 /10, 2005 
Создание динамического веб-сайта, с использованием ПХП(часть первая)   13 /10, 2005 
Все статьи раздела

Услуги| Работы| Решения| Контакты| Статьи | Ссылки

Copyright © 2005 САЙТ. СТРОЙ Как заработать на своем сайте?