Итерация - это выполение операторов внутри тела цикла.
Цикл с постусловием do-while
Отличается от цикла с постусловием while тем, что он проверяет значение выражения не до, а после прохождения тела цикла (итерации). При этом у этого цикла тело выполняется хотябы один раз. Другими словами, если в базе записей нет, то он выдаст ошибку, выбирать нечего, а если есть, то сработает нормально. Для примера рассмотримсинтаксис цикла с постусловием.
Код PHP
1 | do |
2 | { |
3 | тело_цикла; |
4 | } |
5 | while (логическое_выражение); |
После очередной итерации проверяется, истинно ли логическое_выражение, и, если это так, управление передается вновь на начало цикла, в противном случае цикл обрывается. Для этого цикла разработчики php не предусмотрели альтернативного синтаксиса, вероятно из-за того. что его мало, кто использует. Давайте приведу пример работы данного цикла.
Код PHP
1 | <?php |
2 | // Создаем переменную счетчика теперь заметте со значением 1 |
3 | $i = 1; |
4 | do { |
5 | // Выводим на экран |
6 | echo $i; |
7 | // Создаем в теле цикла условие и счетчик +1 |
8 | } while ($i++<10); |
9 | ?> |
В итоге выведет то, что и выводил цикл while (12345678910). Но как видите значение счетчика начиналось не с 0, а с 1.
Следующий цикл со счетчиком for
Цикл со счетчиком используется для выполнения тела цикла определенное число раз. С помощью цикла for можно (и нужно) создавать конструкции, которые будут выполнять действия совсем не такие тривиальные, как простая переборка значения счетчика.
Синтаксис цикла for такой:
Код PHP
1 | for (инициализирующие_команды; условие_цикла; команды_после_итерации) |
2 | { тело_цикла; } |
Цикл for начинает свою работу с выполнения инициализирующих_команд. Данные команды выполняются только один раз. После этого проверяется условие_цикла, если оно истинно (true), то выполняется тело_цикла. После того, как будет выполнен последний оператор тела, выполняются команды_после_итерации. Затем снова проверяется условие_цикла. Если оно истинно (true), выполняется тело_цикла и команды_после_итерации, и. т.д.
Код PHP
1 | <?php |
2 | for ($i=0; $i<10; $i++) echo $i; |
3 | ?> |
Данный сценарий выводит: 0123456789
Есть вариант вывода строки 12345678910:
Код PHP
1 | <?php |
2 | for ($i=0; $i++<10;) echo $i; |
3 | // Выводит 12345678910 |
4 | ?> |
В данном примере мы обеспечили увеличение счетчика при проверке логического выражения. В таком случае нам не нужны были команды, выполняющиеся после итерации.
Если необходимо указать несколько команд, их можно разделить запятыми, пример:
Код PHP
1 | <?php | |
2 | for ($i=0, $a=0; $i<10; $i++, $a++) echo $i; | // Выводит 0123456789 |
Цикл со счетчиком.
Цикл со счетчиком предназначен для многократного повторения однотипных действий. Общий вид цикла в PHP аналогичен большинству классических языков и выглядит следующим образом:
for (инициирующее выражение; условие работы; изменение)
{ тело цикла - одна или несколько команд, вложенные конструкции и пр.}
Простейший пример применения цикла со счетчиком:
<?php for ($i=1; $i<=10; $i++) {print "$i <br>";}
?>
Этот цикл просто выведет чиста от 1 до 10 в разных строках.
Результат срабатывания данного крипта на сервере uchi3d. ru можно посмотреть здесь
Ну и сразу простенькое самостоятельное задание на циклы:
3*1=3 |
3*2=6 |
++++ |
3*10=30 |
Выведите таблицу умножения на введенное пользователем число в таком виде, как показано правее: (в примере пользователь ввел 3).
Вариант решения данной задачи можно посмотреть здесь. Хотя все таки лучше сделать самостоятельно :-) .
Как прервать цикл или пропустить шаг цикла.
Принудительно прервать цикл можно инструкцией break.
Пример цикла со счетчиком, прерываемый в процессе работы:
<?php
for ($i=1; $i<=10; $i++)
{ if ($i==6) break;
print "$i <br>";}
?>
Данный цикл выведет чиста от 1 до 5 в разных строках и затем будет прерван, т. к. $i будет равен 6.
Давайте приведу еще один пример использования цикла for посложней и практичней смотрим;
Код PHP
1 | for($i=0,$j=0,$k="Точки"; $i<10; $j++,$i+=$j) { $k=$k."."; echo $k; } |
2 | // Выводит Точки. Точки..Точки...Точки.... |
Рассмотренный пример (да и вообще любой цикл for) можно реализовать и через while, только это будет выглядеть не так изящно и лаконично.
Для цикла for имеется и альтернативный синтаксис:
Код PHP
1 | for(инициализирующие_команды; условие_цикла; команды_после_итерации): |
2 | операторы; |
3 | endfor; |
Цикл перебора массивов foreach
Данный цикл предназначен для перебора массива. Данный цикл появился в PHP4. Для примера рассмотрим синтаксис;
Синтаксис цикла foreach выглядит следующим образом:
Код PHP
1 | foreach (массив as $ключ=>$значение) |
2 | команды; |
Здесь команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=>значение оказывается в переменных $ключ и $значение. Приведем пример работы цикла foreach:
Код PHP
1 | $значение["ключ"] = "значение"; |
2 | $names["Петров"] = "Борис"; |
3 | $names["Волков"] = "Сергей"; |
4 | $names["Макаров"] = "Федор"; |
5 | foreach ($names as $key => $value) { |
6 | echo "<b>$value $key</b>"; |
7 | } |
В результате получаем следующее
Ключ Значение
Борис Петров
Сергей Волков
Федор Макаров
Давайте рассмотрим и другую форму записи цикла foreach. Пример;
Код PHP
1 | foreach (массив as $значение) |
2 | команды; |
В этом случае доступно лишь значение очередного элемента массива, но не его ключ. Это может быть полезно, например, для работы с массивами-списками:
Код PHP
1 | $значение[] = "значение"; |
2 | $names[] = "Борис"; |
3 | $names[] = "Сергей"; |
4 | $names[] = "Федор"; |
5 | foreach ($names as $value) { |
6 | echo "<b>$value</b>"; |
7 | } |
Внимание: Цикл foreach работает не с исходным массивом, а его копией. Это означает, что любые изменения, которые вносятся в массив, не могут быть "видны"в теле цикла. Что позволяет, например, в качестве массива использовать не только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет вызвана всего один раз - до начала цикла, а затем работа будет производиться с копией возвращенного значения).
Домашнее задание
1. Создадим страницу first. php при условии, что уже установили сервер и php интерпретатор.
<html> |
Переменные

Условный оператор
Дано число. Если оно больше 10, то увеличьте его на 100, иначе уменьшите на 30. Дано натуральное число. Если оно четное, то уменьшите его в 2 раза, иначе увеличьте в 3 раза. Дано число. Если оно не меньше 50, то выведите квадрат этого числа, если же это число больше 10 и меньше 30, то выведите ноль, в остальных случаях выведите слово "Ошибка" Дано два числа. Вывести наибольшее из них.Работа с формой
Пользователь вводит номер дня недели. Вывести название дня недели. Пользователь вводит свой возраст. Если он больше 80 лет, то вывести 'Здравствуйте, уважаемый', иначе 'Успехов!'. Пользователь выбирает из выпадающего списка страну (Турция, Египет или Италия), вводит количество дней для отдыха и указывает, есть ли у него скидка (чекбокс). Вывести стоимость отдыха, которая вычисляется как произведение количества дней на 400. Далее это число увеличивается на 10%, если выбран Египет, и на 12%, если выбрана Италия. И далее это число уменьшается на 5%, если указана скидка. Пользователь выбирает страну из трех вариантов (страну можно указать только одну) и видит название столицы. Пользователь вводит свой имя, пароль, email. Если вся информация указана, то показать эти данные после фразы 'Регистрация прошла успешно', иначе сообщить какое из полей оказалось не заполненным. Найти суму чиселРазработайте программу, которая из чисел 20..45 находила те, которые делятся на 5 и найдите сумму этих чисел. Рекомендую использовать функцию fmod для определения "делится число" или "не делится".
На последок самостоятельное задание на циклы по условию:
Используя цикл по условию с проверкой условия при выходе из цикла решите следующую задачу. Известно, что число бактерий удваивается каждый час. Пользователь вводит начальное число бактерий (например 10) и конечное - например 1000000. Далее начинает работать цикл выводящий в разных строках примерно следующее:
время 1 ч. - уже есть 20 бактерий
время 2 ч. - уже есть 40 бактерий
и т. д. пока не будет превышена конечная цифра.
Форма:
<form action="script4_1.php" method="GET"> (или POST)
Начальное число бактерий - <input type=text name='a'>
Конечное число бактерий - <input type=text name='b'>
<input type=submit value='Пусть плодятся'>
</form>
Вызываемый скрипт:
<?php
$i=$a;
$c=1;
do
{
$i=$i*2;
print "Прошло $c часов - ";
print " уже $i бактерий <br>";
$c++;
}
while ($i<$b);
print "Все!";
?>
Код PHP | ||
|
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


