Цикл FOR
Циклы в программе вещь незаменимая. Основная суть этой конструкции это возможность повторения части программы несколько раз - определенное заданное количество или же пока соблюдается какое-либо условие. Без циклов не обходиться ни одна, даже самая простенькая программа. В этом выпуске мы наконец познакомимся с циклами в PHP и разберем, как они оформляются в программе.
Первый и самый распространенный цикл - FOR. По-английски FOR означает "для". Именно так и можно перевести работу этого цикла. Давайте посмотрим, как он оформляется в программе:
<?
for ($i=0; $i<10; $i++) {
echo "i= ".$i;
echo "<br>";
}
?>
Обратите внимание на первую строчку, которая выделена жирным шрифтом. Это и есть конструкция цикла FOR. Расшифровывается она следующим образом:
- Сначала пишется служебное слово for, которое означает начало цикла.
- Далее в круглых скобках идет условие цикла, состоящее из трех выражений, разделенных точкой с запятой.
- Первая часть - это выражение, которое задает начальное значение переменной цикла. В нашем случае "$i=0;" задает $i равное нулю.
- Вторая часть - выражение, которое проверяется на истинность. Если оно верно - цикл выполняется. Как только оно перестает быть верным, цикл завершается. Вспомните IF - именно такое выражение используется здесь.
- Третья часть - это шаг цикла. Здесь, как и в предыдущих, может быть совершенно любое выражение, которое изменяет начальное значение переменной цикла. В нашем случае это просто увеличение на 1 "$i++";
Итак, если исходить из этой расшифровки, то по-русски можно прочитать заголовок цикла FOR таким образом: "Выполнять цикл от $i равному нулю до $i меньше 10. По ходу цикла увеличивать $i на единицу." В нашем случае цикл будет выполняться 10 раз. В самый первый раз переменной $i присвоиться значение (часть 1), в следующий раз оно будет увеличиваться на единицу (часть 3) и проверяться на истинность (часть 2). Вот и вся незатейливая работа цикла FOR.
Обратите внимание на тот факт, что в качестве любого из трех частей может выступать совершенно любое выражение. Это может быть увеличение или уменьшение переменной, проверка формулы, функция и т.п. Также любая часть может отсутствовать вовсе: for ($i=0;$<10;) Но точку с запятой нужно ставить обязательно. Выражений может не быть вообще: for (;;) но, как видите, две точки с запятой обязательны. Кстати, последний пример создаст бесконечный цикл и есть все шансы подвесить сервер.
Вот примеры использования выражений в конструкциях FOR:
<?
for ($i+15-$a; $i<10 || $i>8;); // два выражения, 3-е отсутствует.
for ($i=10; $i>0; $i--); // цикл "по убыванию" - от 10 до 1
for (;;); // "пустой" - бесконечный цикл
?>
В цикле FOR, также как и в известной вам конструкции IF...THEN...ELSE действует правило, когда при наличии нескольких операторов в блоке они оформляются фигурными скобками: {...}. Если оператор один - достаточно поставить после него точку с запятой. Вот пример "свернутой" и "развернутой" конструкции:
<?
for ($i=1; $i<11;$i++) echo "i=$i<br>";
for ($i=0; $i<10; $i++) {
echo "i= ".$i;
echo "<br>";
}
?>
Это вся теория относительно цикла FOR. Конкретные примеры его использования смотрите в рубрике Пример в номер.
Цикл WHILE
Цикл WHILE несколько отличается от цикла FOR. Основное отличие - это отсутствие каких-либо действий с переменной цикла. WHILE только проверяет ее на истинность и при утвердительном результате (выражение верно) продолжает работу. Как только выражение перестает быть истинно, он завершается. Больше WHILE не делает ничего - ни задает начальные значения, ни производит действий с переменными. Проще говоря, WHILE содержит только вторую часть конструкции цикла FOR - проверку условия. Прежде чем разбираться, где и как используется этот цикл, давайте посмотрим, как он выглядит:
<?
$i = 1;
while ($i<11) {
echo "i=$i<br>";
$i++;
}
?>
Здесь все просто и, если вы уже знакомы с циклом FOR, то разберетесь в этой конструкции без проблем. По порядку:
- Сначала указывается служебное слово while, которое означает начало цикла.
- Далее в скобках указывается логическое выражение, которое проверяется на истинность. Если оно верно - выполняется тело цикла. В нашем случае - если $i меньше 10, то цикл работает. Если нет - цикл завершается.
Как обычно, выражение может быть любой сложности. Также здесь, как и в других конструкциях языка, работает правило оформления нескольких операторов в скобках {...}. Если оператор один - скобки можно опустить.
Основное назначение цикла WHILE - изменение переменной цикла в самом теле цикла. Это бывает очень полезно, когда используются нематематические проверки. Хочу обратить ваше внимание на основное правило использования WHILE и FOR - когда нужно выполнить цикл строго определенное количество раз, используется FOR, так как он позволяет задать жесткий шаг. Когда нужно, чтобы количество выполнений (или, по-другому итераций) цикла зависело от программы и может быть различным в зависимости от текущих условий - используется WHILE.
Собственно, это и все, что можно сказать по циклу WHILE. Конструкция, согласитесь, очень проста. Конкретные примеры его использования смотрите в рубрике Пример в номер.
Пример в номер
В этой новой рубрике, которую ведет Александр Лысенко (за что ему огромное спасибо!) вы найдете полезные примеры, которые помогут вам лучше понять изучаемый материал. Сегодня здесь приводиться два примера, которые выводят таблицу умножения различными способами - с использованием циклов FOR и WHILE.
Пример N1: Цикл FOR
<?
/*
СТАНДАРТНАЯ ТАБЛИЦА УМНОЖЕНИЯ (КАК У ВСЕХ В ШКОЛЕ БЫЛА ВЗАДИ
ТЕТРАДИ)
ПРОСТОЙ ПРИМЕР ДЛЯ РАБОТЫ С ЦИКЛАМИ
*/
//Первый множитель
for ($i=1; $i<10; $i++) //Пока $i меньше 10 увеличиваем её на 1
{
//Второй множитель
for ($j=1; $j<10; $j++) //Также с $j пока она меньше 10 увеличиваем её на 1
{
//Выводим результат, т.е. саму таблицу умножения
echo "$i * $j = ".$i*$j."<br>";
}
}
?>
Пример N2: Работа с циклом WHILE
<?
/*
ТАЖЕ ТАБЛИЦА УМНОЖЕНИЯ ТОКА В ОБРАТНОМ ПОРЯДКЕ И ЗАПИСАНАЯ ПРИ
ПОМОЩИ ОПЕРАТОРА
while
*/
$i=10; //начальное значение $i
while (--$i) //Уменьшение $i на единицу пока она не станет 0
{
$j=10; //Начальное значение $j
while (--$j) //Уменьшение $j на единицу пока она не станет
{
echo "$i * $j = ".$i*$j."<br>"; //Вывод результата, т.е. самой таблицы умножения
}
}
?>