Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

Урок 3. Циклы в PHP.

news date Дек.10.2007    categories Web-программирование > PHP    comments (1)

Цикл — разновидность управляющей конструкции, предназначенная для организации многократного исполнения набора инструкций. Основные типы циклов, используемых в 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.

  1. Что такое циклы. Перечислите виды циклов.
  2. В чем принципиальное отличие цикла WHILE от цикла DO ?
  3. Объясните работу цикла со счетчиком (FOR). Какие три выражения записываются в условии цикла.
  4. Что такое инкремент и декремент. Опишите работу операторов “++” и “–”

Рекомендую ответы на вопросы записывать в тетрадь…

Спасибо за внимание!


Обсуждения

1 комментарий к “Урок 3. Циклы в PHP.”
  1. GaaD пишет:

    А как сделать, чтобы в задаче #1 строки чередовали цвета? 1ая белая, 2ая чорная, 3 белая и т.д.

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал