PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.
Предназначен для перебора элементов массива.

$array = array(
1 => 'Значение 1',
2 => 'Значение 2',
3 => 'Значение 3',
4 => 'Значение 4',
);
// Вывод ключей
foreach ($array as $key => $val) {
echo $key . '<br>';
}
// Вывод значений
foreach ($array as $key => $val) {
echo $val . '<br>';
}
Результат:
1
2
3
4
Значение 1
Значение 2
Значение 3
Значение 4
Альтернативный синтаксис foreach
<?php foreach ($array as $key => $val): ?>
<?php echo($val); ?>
<?php endforeach; ?>
Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.

// Счетчик от 0 до 5
for ($n = 0; $n <= 5; $n++) {
echo $n;
}
// Счетчик от 5 до 0
for ($n = 5; $n >= 0; $n--) {
echo $n;
}
Результат:
012345
543210
Альтернативный синтаксис
Им также можно перебирать массивы, у которых не заданы ключи.$array = array(
'Значение 1',
'Значение 2',
'Значение 3',
'Значение 4',
);
for ($n = 0; $n < count($array); $n++) {
echo $array[$n] . '<br>';
}
Результат:
Значение 1
Значение 2
Значение 3
Значение 4
Альтернативный синтаксис for
<?php for ($n = 0; $n <= 5; $n++): ?>
<?php echo $n; ?>
<?php endfor; ?>
Т.е. если перед началом итерации условие выполняется, то цикл продолжает свою работу.

$n = 0;
while ($n <= 5) {
echo $n;
$n++;
}
Результат:
012345
Альтернативный синтаксис while
<?php while ($n <= 5): ?>
<?php
echo $n;
$n++;
?>
<?php endwhile; ?>
В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-while не имеет альтернативного синтаксиса.
.png)
$n = 0;
do {
echo $n;
$n++;
} while ($n <= 5);
Результат:
012345
Break
Вызов break или break 1 в цикле останавливает его.
for ($n = 0; $n <= 5; $n++) {
if ($n == 3) {
break;
}
echo $n;
}
Для вложенных циклов используется break 2 и т.д.
for ($n = 0; $n <= 5; $n++) {
for ($k = 0; $k <= 5; $k++) {
if ($n == 2 && $k == 2) {
// Остановить оба цикла
break 2;
}
echo $k;
}
}
Continue
Используется для пропуска итерации.
for ($n = 0; $n <= 5; $n++) {
if ($n == 3) {
continue;
}
echo $n;
}
Результат:
01245
Для вложенных циклов по аналогии с break 2, break 3 – continue 2, continue 3.





