PHP занятие 4. Циклы

На уроке будут рассмотрены операторы цикла php: цикл while php, цикл foreach, цикл do while и цикл со счетчиком for. Будут разобраны примеры выхода из цикла (в php — break и continue)

Цикл While php

Синтаксис:

1
2
3
4
5
while (условие){
	 оператор 1;
	 оператор 2;
	 ...
 }

Фигурные скобки обязательны в данной конструкции, если в цикле используется составной оператор: т.е. не один, а последовательность из нескольких операторов. Если оператор один, то скобки можно опустить.

Цикл while php пример
Рис. 4.1. Пример использования цикла While

Результат:

1 2 3 4 5 6 7 8 9 10

Кроме того, можно использовать альтернативный синтаксис:

1
2
3
4
5
while (условие):
	 оператор 1;
	 оператор 2;
	 ...
endwhile;
Пример альтернативного использования цикла While
Рис. 4.2. Пример альтернативного использования цикла While
Пример: Выводить на экран ряд чисел 4 7 10 13 16 19 22… Всего вывести 30 цифр. Использовать цикл While php

Решение:

1
2
3
4
5
6
$sum=1;
while ($i<=30){
	 $sum+=3;
	 $i++;
	 echo ($sum." ");
}

Результат:

4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94
Пример: Выводить степени двойки до значения 1024

цикл While php пример
Решение:

1
2
3
4
5
$a=1;
 while ($a<1000){
	 $a=$a*2;
	 echo ($a." ");
 }
Задание php 4_1: написать скрипт, вычисляющий квадраты целых чисел от 1 до 9

Цикл Do while php

Синтаксис:

1
2
3
4
5
do {
	 оператор 1;
	 оператор 2;
	 ...
 } while (условие);

Фигурные скобки обязательны в данной конструкции независимо от количества операторов цикла.

цикл do while php
Рис. 4.3. Пример использования цикла Do While

Результат:

1 2 3 4 5 6 7 8 9 10
Пример: Выводить на экран ряд чисел 4 7 10 13 16 19 22... Всего вывести 30 цифр

Цикл Do While php пример
Решение:

1
2
3
4
5
6
$sum=1;
do {
	 $sum+=3;
	 $i++;
	 echo ($sum." ");
}while ($i<=30);
Задание php 4_2: написать скрипт, вычисляющий квадраты целых чисел от 1 до 9

Цикл For php со счетчиком

Синтаксис:

1
2
3
4
5
6
for (начальное значение счетчика; условие продолжения цикла; изменение счетчика на каждой итерации) 
{  
   оператор 1;
   оператор 2;
   ...; 
}
  • После служебного слова for в скобках через ; обязательно указываются 3 параметра.
  • Цикл For в php может быть и без фигурных скобок, если в теле цикла присутствует только один оператор.

цикл for php
Рис. 4.4. Пример использования цикла For

Результат:

Привет!
Привет!
Привет!
Привет!
Привет!

  • В php для цикла for поддерживается альтернативный синтаксис:
  • 1
    2
    3
    4
    5
    
    for (начальное значение счетчика; условие продолжения цикла; изменение счетчика на каждой итерации) :
       оператор 1;
       оператор 2;
       ...; 
    endfor;
Пример: Выводить в окно браузера числа от 1 до 10

Решение:

1
2
3
for ($i = 1; $i <= 10; $i ++) {
    echo $i." ";
}

Результат:

Цикл For php пирмер

Лабораторная работа:
Нарисовать таблицу умножения

Этап 1

  1. Создайте две числовые переменные cols и rows
  2. Присвойте созданным переменным произвольные значения в диапазоне от 1 до 10

Этап 2

  1. Используя циклы, отрисуйте таблицу умножения в виде HTML-таблицы на следующих условиях:
    • Число столбцов должно быть равно значению переменной cols
    • Число строк должно быть равно значению переменной rows
    • Ячейки на пересечении столбцов и строк должны содержать значения, являющиеся произведением порядковых номеров столбца и строки
  2. Рекомендуется использовать циклы for

Этап 3

  • Значения в ячейках первой строки и первого столбца должны быть отрисованы полужирным шрифтом
  • Фоновый цвет ячеек первой строки и первого столбца должен быть отличным от фонового цвета таблицы. Сохраните файл.

Дополните код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<table border="1">
<?php
$rows=9;
$cols=9;
	for($tr=1; ...; ...){
		echo "<tr>";
		for($td=1; ...; ...){
			if(...){
				echo "<th style='background-color:yellow;font-weight:900'>", 
                         $tr * $td, "</th>";
			}else{
				echo "<td>", $tr * $td, "</td>";
			} 
		}	
		echo "</tr>";
	}
?> 
</table>

Количество элементов массива

Для удобства работы с массивами часто используется функция count()

Функция возвращает кол-во элементов массива

count($masiv);
Пример: Дан массив, состоящий из названий времен года. Необходимо вывести все элементы массива неизвестного размера

Решение:

1
2
3
4
5
6
7
8
9
<?php
$mas[]="Лето";
$mas[]="Осень";
$mas[]="Зима";
for ($n = 0; $n <count($mas); $n++) 
{
	echo "$mas[$n]" . "<br>";
} 
?>

Результат:

цикл со счетчиком в php пример

Цикл Foreach в php

Обход массива наиболее выгодным образом происходит при помощи итерационного цикла foreach, позаимствованного из синтаксиса языка Perl.

  1. Короткий вариант:
  2. 1
    2
    3
    4
    
    foreach($array as $value){
    	оператор1;
    	оператор2;
    }

    $value — доступ к значению элемента массива

    цикл foreach php
    Рис. 4.5. Пример использования цикла Foreach

    Результат:

    1 2 3 4

    Пример: Выводить значения массива user, в котором записаны данные об Иване

    Решение:

    1
    2
    3
    4
    5
    6
    7
    
    $user = array("Ivan",
    				"root",
    				"password",
    				"312-34-85");
    foreach($user as $value){
    	echo "$value</br>";
    }

    Результат:

    Ivan
    root
    password
    312-34-85

  3. Длинный вариант:
  4. 1
    2
    3
    
    foreach($massiv as $index => $value){
    	оператор;
    }

    $massiv — массив
    $index — индекс элемента массива
    $value — доступ к значению элемента массива

цикл foreach в php пример
Рис. 4.6. Пример использования цикла Foreach, полный вариант

Результат:

Массив с индексом 0 равен 1
Массив с индексом 1 равен 2
Массив с индексом 2 равен 3
Массив с индексом 3 равен 4

Пример: Выводить индексы и значения массива user, в котором записаны данные об Иване

Решение:

1
2
3
4
5
6
7
8
$user["name"]="Ivan";
$user["login"]="root";
$user["password"]="p@ssword";
$user[]="312-34-85";
 
foreach($user as $index =>$value){
	echo "Индекс $index равен $value</br>";
}

Результат:

пример цикла foreach в php длинный вариант
Пример:

  1. Выводить приветствие для имен из списка
  2. Кроме приветствия выводить номера в списке
1
2
3
4
5
6
7
8
9
10
$names = array("Иван","Петр","Семен");
// 1 задание 
foreach ($names as $val) {
    echo "Привет, $val <br>";   
}
// 2 задание
foreach ($names as $k => $val) { 
        echo "Привет, $val ! 
	  Ты в списке под номером $k <br>"; 
}

Результат:

foreach пример
Задание php 4_3: Дан массив, состоящий из названий дней недели. Вывести элементы, используя конструкцию foreach.

Дополнительно: вывод должен быть в формате: понедельник – день 1

Лабораторная работа:
Нарисовать (добавить) навигационное меню на странице, типа:

href="contact.php">Contact</а>

используя массив в качестве структуры меню.

Алгоритм:

  1. Создайте ассоциативный массив $menu
  2. Заполните массив, соблюдая следующие условия:
    • Индексом элемента массива является пункт меню, например: Home, About, Contact
    • Значением элемента массива является имя файла, на который будет указывать ссылка, например: index.php, about.php, contact.html
  3. Используя цикл foreach отрисуйте вертикальное меню, структура которого описана в массиве $menu

Выход из цикла в php Break и Continue

Break

Оператор break прерывает выполнение текущей итерации конструкций for, foreach, while, do-while или switch.

Обычно данный оператор используется без аргументов, но можно его применять и с аргументом — какое количество вложенных структур необходимо прервать. По умолчанию это значение 1, т.е. только ближайшая структура будет прервана.

Пример: в цикле, выводящем числа от 1 до 10, добавить оператор break, чтобы последним выводимым числом было 6

Решение:

1
2
3
4
5
6
$i=1;
while($i<=10){
    echo $i." ";	
	if ($i==6) break;
	$i++;
};

Результат:

php Break пример

Рассмотрим пример с использованием аргумента в операторе break.

Пример: В цикле, выводящем числа от 1 до 10, использовать два оператора break: один из которых при определенном условии выходит из внутренней конструкции switch, а другой — выходит из switch и цикла while

Решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$i=1;
while($i<=15){
    echo $i." ";	
	switch ($i) {
    case 5:
        echo "Итерация 5<br />\n";
        break 1;  /* Выйти только из конструкции switch. */
    case 10:
        echo "Итерация 10; выход <br />\n";
        break 2;  /* Выходим из конструкции switch и из 
                  цикла while. */
    default:
        break;
    }
	$i++;
};

Результат:

php Break с аргументом пример
Continue

Оператор continue используется в циклических структурах (и switch) для выхода из оставшейся части текущей итерации цикла.

Пример: В цикле, выводящем на экран числа от 1 до 10, необходимо ввести оператор continue таким образом, чтобы выводились только нечетные числа

Решение:

1
2
3
4
5
6
7
8
$i=0;
while($i<10){
    $i++;	
	if (!($i%2)) { // пропуск четных
		continue;
	}
	echo $i." ";
};

Результат:

php continue пример
Задание php 4_4: при помощи цикла for и оператора continue выводить все четные числа от 2 до 20
Задание php 4_5: проверить, есть ли в заданном числовом массиве отрицательные числа (хотя бы одно). Если есть — выводить «да», если нет — выводить «нет». Выводить сообщение один раз