Опубликован: 08.05.2007 | Доступ: свободный | Студентов: 12881 / 3013 | Оценка: 4.13 / 3.77 | Длительность: 12:58:00
Лекция 5:

Циклические структуры

< Лекция 4 || Лекция 5: 12 || Лекция 6 >

Цикл for

Оператор цикла for используется, когда известно, сколько раз необходимо выполнить оператор или последовательность операторов. В связи с этим цикл for называют точным циклом.

Базовый синтаксис цикла for показан ниже.

for (инициализация; условие; шаг цикла) {
выполняемый код;
}

Оператор цикла for имеет три параметра. Первый параметр используется для инициализации переменных, второй содержит условие, а третий включает в себя приращения, требуемые для реализации цикла. Блок кода, связанный с оператором for, заключается в фигурные скобки ({}), если блок состоит из одного оператора, то фигурные скобки не обязательны.

Следующий пример демонстрирует цикл for для 4-кратного вывода сообщения "Добро пожаловать в мир PHP":

<?php
for ($counter=1; $counter < 5; $counter++) {
echo "Добро пожаловать в мир PHP!<br/>";
}
?>

В приведенном выше примере цикл for включает три параметра, которые выполняют следующие задачи:

  1. Переменная $counter инициализируется значением 1.
  2. $counter < 5 определяет условие, которое должно выполняться для выполнения цикла.
  3. $counter++ увеличивает значение переменной $counter при каждом выполнении цикла.

Ниже показан вывод, созданный этим примером цикла.

Добро пожаловать в мир PHP! 
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!

При первом выполнении переменная $counter инициализируется значением 1. Так как 1 меньше 5, $counter увеличивается на 1. Затем используется оператор echo для вывода строки "Добро пожаловать в мир PHP!". К выводу присоединяется <br/>, чтобы создавать возврат каретки при каждом выполнении цикла. Во время второй итерации значение $counter будет равно 2. Так как 2 меньше 5, то оператор echo снова выводит строку "Добро пожаловать в мир PHP!". Этот процесс продолжается при значениях $counter, равных 3 и 4. Когда $counter становится равным 5, условие больше не выполняется, и цикл for заканчивается.

Циклы for используются также в качестве удобного способа выполнения итераций по значениям массива. Вспомните, что массивы состоят из элементов и индексов. Каждый элемент имеет связанный с ним индекс. Первый индекс массива с числовыми индексами равен 0. До сих пор при выводе элементов массива требовалось выводить каждый элемент отдельно. Для больших массивов это может потребовать много времени и оказаться громоздким. Циклы for решают эту проблему. В следующем примере создается массив с 5 элементами. Затем применяется цикл for для вывода всех значений массива.

<?php

//Создается новый массив, содержащий 5 значений цвета
$colors = array('red', 'green', 'blue', 'yellow','white');

// Цикл for используется для итераций по массиву и вывода каждого элемента 

for ($i = 0; $i < sizeof($colors); $i++)
{
	echo "Значением элемента массива", $i+1," является $colors[$i].".<br>;
}
?>

Массив $colors содержит пять элементов — $colors[0] = "red", $colors[1] = "green", $colors[2] = "blue", $colors[3] = "yellow", и $colors[4] = "white". Создается цикл for. Переменной счетчику $i сначала задается значение 0, что соответствует первому элементу массива. Затем задается условие, проверяющее, что значение счетчика $i меньше sizeof($colors) или общего числа элементов массива. Здесь мы знаем, что размер массива равен 5, однако в большинстве случаев размер массива во время выполнения неизвестен. Наконец, переменная счетчика увеличивается на 1 во время каждой итерации. На каждом шаге выполнения цикла выводится строка — "Значением элемента массива $i+1 является $colors[$i]". Значения $i+1 и $colors[$i] расширяются и создают при выводе литеральные значения. Цикл выполняется, пока счетчик не превысит число элементов или размер массива. Получаемый вывод показан ниже.

Значением элемента массива 1 является red.
Значением элемента массива 2 является green.
Значением элемента массива 3 является blue.
Значением элемента массива 4 является yellow.
Значением элемента массива 5 является white.

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

Цикл foreach

Конструкция foreach является вариацией цикла for и применяется для итераций на массивах. Существуют две различные версии цикла foreach.

Базовый синтаксис обеих версий цикла foreach показан ниже.

foreach ($array as $value)
    {
    оператор
    }
    
foreach ($array as $key => $value)
	{
    оператор 
	}

Первый тип цикла foreach используется для итераций по массиву, обозначенному как $array. Во время каждой итерации цикла текущее значение массива присваивается переменной $value, и счетчик цикла увеличивается на единицу. Цикл продолжается, пока foreach не достигнет последнего элемента или верхней границы заданного массива. Во время каждой итерации значение переменной $value можно использовать любым способом, но исходное значение массива не изменяется. Чтобы изменить реальное значение массива, необходимо добавить символ "&". Любые изменения, сделанные в &value, будут присвоены элементу массива с текущим индексом.

Следующий пример демонстрирует, как цикл foreach применяется для итераций по значениям массива.

<?php
$my_array = array('red','green','blue');
echo "Различные цвета включают: ";
foreach($my_array as $value)
	{
	$colors = $value . " ";	
	echo $colors;
	}
?>

Во время каждой итерации имя цвета, связанное с текущим элементом массива, присваивается переменной $colors. Также добавляется одиночный пробел между соседними именами цветов для целей вывода. Когда цикл достигает конца массива, создается следующий вывод.

Различные цвета включают: red green blue

Вторая форма цикла обеспечивает такие же функции, что и первая, но дополнительно присваивает на каждом шаге итерации индекс текущего элемента массива или ключ переменной $key. В предыдущем примере массив $my_array содержит три элемента: $my_array[0] = "red", $my_array[1] = "green", и $my_array[2] = "blue". В то время как переменная $value содержит значения элементов массива red, green и blue, переменная $key содержит индексы элементов массива 0, 1, и 2.

< Лекция 4 || Лекция 5: 12 || Лекция 6 >
Максим Матросов
Максим Матросов
Наталья Джабасова
Наталья Джабасова