В 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 так же вызывается с цифрой.

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

Полезная статья?
(Голосов: 3, Рейтинг: 3.25)
Вам также могут понравиться
Английский для программистов

Английский для программистов

Почему IT-специалисту необходимо освоить английский язык? Разбираем в статье.

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как правильно подключать стили и скрипты к шаблону 1С Битрикс.

Генерация оглавления статьи

Генерация оглавления статьи

В статье рассмотрен пример функции для генерации оглавления статьи блога или новости


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