Не пропусти свежие посты, подпишись:
В php есть 4 классических вида циклов, а так же операторы позволяющие управлять их поведением. Давайте рассмотрим их подробнее.

Цикл foreach

Данный цикл один из самых часто испольуемых и удобных циклов в PHP. Вам часто придётся сталкиваться с перебором массивов, обычных или ассоциативных.

$arr= [
	'Январь',
	'Февраль',
	'Март',
	'Апрель',
	'Май',
	'Июнь',
	'Июль',
	'Август',
	'Сентябрь',
	'Октябрь',
	'Ноябрь',
	'Декабрь',
];
 
//Вывод значений
foreach ($arr as $val) {
	echo $val . '<br/>';
}

echo '<br/>';

//Можно так же дотянуться в цикле до ключей массива
 foreach ($arr as $key => $val) {
	echo $key . ' - ' . $val . '<br/>';
}


Результат:

Январь
Февраль
Март
Апрель
Май
Июнь
Июль
Август
Сентябрь
Октябрь
Ноябрь
Декабрь

0 - Январь
1 - Февраль
2 - Март
3 - Апрель
4 - Май
5 - Июнь
6 - Июль
7 - Август
8 - Сентябрь
9 - Октябрь
10 - Ноябрь
11 - Декабрь

Цикл for

Данный цикл выполняется до тех пор, пока выполняется заданное условие.

$arr= [
	'Январь',
	'Февраль',
	'Март',
	'Апрель',
	'Май',
	'Июнь',
	'Июль',
	'Август',
	'Сентябрь',
	'Октябрь',
	'Ноябрь',
	'Декабрь',
];
 
for($index = 0; $index < 3; $index++){
	echo $arr[$index] . '<br/>';
}

Цикл for() не перебирает сам массив в примере выше. Он задаёт начальное значение переменной $index = 0; затем условие своей работы $index < 3; пока условие истинно (т.е. значение $index меньше 3-х) цикл будет работать. Так же указывается действие, которое нужно выполнить на каждом шаге цикла $index++ (после того, как код в фигурных скобках, так называемом «теле цикла» будет выполнен). В данном случае, переменная $index увеличивается на единицу.

Другой пример.

for($index = 0; $index <= count($arr); $index = $index + 2){
	echo $arr[$index] . '<br/>';
}

Результат:

Январь
Март
Май
Июль
Сентябрь
Ноябрь


В этом примере мы поменяли как само условие $index <= count($arr); так и выражение, которое выполняется на каждом шаге $index = $index + 2 . Условия и шаг могут быть различными, под вашу задачу. Но обычно этот цикл используется как счётчик, в задачах типа «Обработать первые x элементов массива» или «Вывести каждый второй элемент массива».

Цикл while

Этот цикл означает, что пока условие будет истинно, цикл будет работать.

$arr = [
	'Январь',
	'Февраль',
	'Март',
	'Апрель',
	'Май',
	'Июнь',
	'Июль',
	'Август',
	'Сентябрь',
	'Октябрь',
	'Ноябрь',
	'Декабрь',
];

$index = 0;
 
while ($index <= 5) {
	echo $arr[$index] . '<br/>';
	$index++; //счётчик наращиваем тут
}

Результат:

Январь
Февраль
Март
Апрель
Май
Июнь

В данном случае, пока $index будет меньше или равно 5, код в теле цикла будет исполняться. В целом они похожи с for() но тут начальное значение $index задаётся до объявления цикла, а наращивание переменной должно выполняться в теле цикла.

Цикл do while

Основное отличие от обычного цикла while() в том, что тело цикла будет выполнено как минимум один раз, даже если условие вернёт false.

$arr = [
	'Январь',
	'Февраль',
	'Март',
	'Апрель',
	'Май',
	'Июнь',
	'Июль',
	'Август',
	'Сентябрь',
	'Октябрь',
	'Ноябрь',
	'Декабрь',
];

$index = 6;
 
do {
	echo $arr[$index] . '<br/>';
	$index++; //счётчик наращиваем тут
} while ($index <= 5);


Результат:

Июль

Получается начальное значение переменной $index больше 5, однако код в теле цикла отрабатывает ДО того как условие будет проверено.

Управление работой цикла

Остановка цикла break

Иногда, во время выполнения цикла, нужно прекратить его выполнение вовсе и выйти из цикла. Чтобы сделать это, вам нужно вызвать оператор break, который тут же остановит выполнение цикла.


$arr = [
	'Январь',
	'Февраль',
	'Март',
	'Апрель',
	'Май',
	'Июнь',
	'Июль',
	'Август',
	'Сентябрь',
	'Октябрь',
	'Ноябрь',
	'Декабрь',
];

foreach($arr as $key => $val){
	if($key >= 3){
		break;
	}
	
	echo $val . '<br/>';
}
Результат:

Январь
Февраль
Март
Апрель




Если вам нужно остановить несколько вложенных циклов сразу, следует вызвать break с цифрой означающей количество вложенных (от текущего уровня вложенности) циклов нужно остановить. Например break 2; 

Переход на следующий шаг continue

Этот оператор заставляет цикл пропустить текущий шаг и перейти к следующему не выполняя код в теле цикла. В примере ниже, мы выводим только чётные месяцы года:


$arr = [
	'Январь',
	'Февраль',
	'Март',
	'Апрель',
	'Май',
	'Июнь',
	'Июль',
	'Август',
	'Сентябрь',
	'Октябрь',
	'Ноябрь',
	'Декабрь',
];

foreach($arr as $key => $val){
	if((($key +1) % 2) > 0){
		continue;
	}
	
	echo $val . '<br/>';
}

Результат:

Февраль
Апрель
Июнь
Август
Октябрь
Декабрь
Если вы используете вложенные циклы и вам так же нужно пропустить шаг не только на текущем уровне, но и на уровне выше, оператор continue так же вызывается с цифрой.

Мы рассмотрели наиболее распространённые случаи работы с циклами. Удачи!

Не пропусти свежие посты, подпишись:
Полезная статья?
(Голосов: 1, Рейтинг: 3.3)
Курсы от партнёров
Хотите освоить востребованную профессию? Воспользуйтесь предложениями от наших партнёров. Пройдите учебный курс по одному из популярных IT направлений.

Все курсы партёнров
Вам также могут понравиться
Кем можно работать в сфере веб-разработки

Кем можно работать в сфере веб-разработки

Хотите начать работать в сфере веб-разработки, но не знаете с чего можно начать? Читайте описание самых популярных веб-профессий, с их описанием, обязанностями и ориентировочными зарплатами.

CSS курсоры

CSS курсоры

В статье рассмотрены возможности изменения курсоров пользователя при помощи CSS

Работа с регистром строк в php

Работа с регистром строк в php

В статье рассмотрены примеры работы с регистром строк в языке PHP, проверка регистра, изменение, инверсия


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке