Урок 3. Циклы в PHP.
Цикл — разновидность управляющей конструкции, предназначенная для организации многократного исполнения набора инструкций. Основные типы циклов, используемых в PHP: цикл с предусловием (WHILE), цикл с постусловием (DO) и цикл со счетчиком (FOR).
Основное отличие цикла с постусловием от цикла с предусловием в том, что в первом случае тело цикла обязательно выполняется хотя бы один раз. Затем программа проверяет условие выхода из цикла, и повторяет цикл, либо выходит из него. В случае работы цикла с предусловием – сначала будет проверено условие, и если есть необходимость – будет выполнено тело цикла.
Цикл с постусловием (DO):
Синтаксис:
do
{
тело цикла
}
while (условие продолжения цикла)
Пример:
<?php
$a=0;
do
{
$a=$a+1;
echo $a.'<br>';
}
while ($a<25);
?>
Результатом работы этого цикла будет вывод чисел от 1 до 25.
Опишем работу цикла:
Первое, что выполнит программа при входе цикла – увеличит переменную $a на 1. Затем выведет $a в браузер. Затем проверит условие и повторит цикл до тех пор, пока $a меньше 25. При этом $a примет значение 25 на последнем прохождении цикла.
Циксл с предусловием (WHILE):
Синтаксис:
while (условие продолжения цикла)
{
тело цикла
}
Пример:
<?php
$a=0;
while($a<25)
{
$a=$a+1;
echo $a.'<br>';
}
?>
Результатом работы этого цикла будет вывод чисел от 1 до 25.
Опишем работу цикла:
Первое, что выполнит программа при входе в цикл – проверит условие. Затем, если условие будет удовлетворять, выполнит тело цикла: увеличит переменную $a на 1 и выведет в браузер.
Цикл со счетчиком (FOR):
Отличие этого цикла в том, что мы можем задать количество повторений цикла.
Синтаксис:
for (инициализация переменной; условие выполнения цикла; шаг приращения)
{
тело цикла
}
Пример:
<?php
for($i=0; $i<100; $i=$i+1)
{
echo $i.' ';
}
?>
Опишем работу цикла:
Что мы видим после оператора FOR в скобках… Первое: инициализация переменной $i со значением =0. Второе: Условие продолжения цикла (цикл выполняется пока $i меньше 100). Третье: приращение (инкремент) переменной $i (с каждым прохождением цикла переменная $i увеличивается на 1).
Примечание: PHP, аналогично C, поддерживает префиксные и постфиксные операторы инкремента и декремента. В наших примерах выражение $a=$a+1 можно заменить записью $a++ , а $a=$a-1 записью $a–
Операторы инкремента и декремента:
| ++$a | Префиксный инкремент | Увеличивает $a на единицу и возвращает значение $a. |
| $a++ | Постфиксный инкремент | Возвращает значение $a, а затем увеличивает $a на единицу. |
| –$a | Префиксный декремент | Уменьшает $a на единицу и возвращает значение $a. |
| $a– | Постфиксный декремент | Возвращает значение $a, а затем уменьшает $a на единицу. |
Задания к уроку 3:
Задача 1
Вывести таблицу 10 строк на 10 столбцов (всего 100 ячеек), и в каждой ячейке таблицы записать последующее число (от 0 до 99). Использовать все варианты циклов.
Задача 2
Залить в директорию /images 100 графических файлов. Вывести таблицу 10 строк на 10 столбцов (всего 100 ячеек) и в каждую ячейку поместить картинку с очередным именем (имена картинок: 1.jpg 2.jpg 3.jpg и т.д.) Получится мини-галлерея для вашего сайта…
Задача 3
Усложняем предыдущую задачу: необходимо вывести таблицу 4 строки, 5 столбцов (всего 20 ячеек), в которых поместить картинки… Под таблицей вывести навигацию по страницам. При этом, посылая в скрипт переменную методом GET, выводить порциями по 20 картинок. Таким образом у нас должно получиться 5 страниц.
Далее читать после выполнения заданий…
Ответы:
Задача 1. Код.
<table border="1">
<?php
for($i=1; $i<=100; $i=$i+10)
{
echo '<tr>';
for($j=$i; $j<($i+10); $j++)
{
echo '<td>'.$j.'</td>';
}
echo '</tr>';
}
?>
</table>
Разбор кода:
Используем два цикла. Первый отвечает за вывод строк, второй – за вывод столбцов. Первый цикл: for($i=1; $i<=100; $i=$i+10) (для вывода строк) – будет выполнен 10 раз, при этом переменная $i будет с каждым выполнением цикла увеличиваться на 10. Второй цикл: for($j=$i; $j<($i+10); $j++) (для вывода ячеек) – переменная $j инициализируется текущим значением переменной $i и цикл выполняется 10 раз с приращением $j на единицу.
Задача 2. Код.
<table border="1">
<?php
for($i=1; $i<=100; $i=$i+10)
{
echo '<tr>';
for($j=$i; $j<($i+10); $j++)
{
echo "<td><img src='img/$j.jpg'></td>";
}
echo '</tr>';
}
?>
</table>
Код написан на основе предыдущего, но для вывода картинко использована запись echo “<td><img src=’img/$j.jpg’></td>”;
Задача 3. Код.
<center> <table border=1> <? if(!$_GET['p']) $p=1; else $p=$_GET['p']; for($i=$p; $i<($p+20); $i=$i+5) { echo '<tr>';for($j=$i; $j<($i+5); $j++) { echo '<td><img src="img/'.$j.'.jpg" mce_src="img/'.$j.'.jpg"></img></td>'; }echo '</tr>'; }?> </table><?php // Блок навигации... $count=1; for ($p=1; $p<100; $p=$p+20) { echo '<a href=avatars.php?p='.$p.'>'.$count.'</a> | ' ; $count++; } ?> </center>
Разбор кода:
Для “постраничного” вывода используем переменную $p, передаваемую в скрипт методом GET. Если переменная $p не была передана, то присваиваем ей значение 1. В цикле для инициализации счетчика используем переменную $p, таким образом цикл выводит 20 картинок, начиная с картинки под номером $p.
В блоке навигации – используем переменную $count для вывода номера “страницы”, и генерируем ссылку, посылающую в скрипт переменную $p.
Контрольные вопросы к уроку 3.
- Что такое циклы. Перечислите виды циклов.
- В чем принципиальное отличие цикла WHILE от цикла DO ?
- Объясните работу цикла со счетчиком (FOR). Какие три выражения записываются в условии цикла.
- Что такое инкремент и декремент. Опишите работу операторов “++” и “–”
Рекомендую ответы на вопросы записывать в тетрадь…
Спасибо за внимание!





августа 13, 2008 at 14:19
А как сделать, чтобы в задаче #1 строки чередовали цвета? 1ая белая, 2ая чорная, 3 белая и т.д.
Добавить комментарий
Вы должны войти