Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Циклы

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

while

Цикл while повторяет блок, пока условие истинно. Условие проверяется перед каждым повторением:

<?php
 
$i = 1;
 
while ($i <= 3) {
    echo $i, "\n";
    $i++;
}

Переменная $i называется счётчиком. Внутри цикла её обязательно нужно менять, иначе условие никогда не станет ложным.

for

Когда число повторений известно заранее, удобнее for. В скобках через точку с запятой записаны три части: начальное значение, условие и шаг:

<?php
 
for ($i = 1; $i <= 3; $i++) {
    echo "Шаг $i\n";
}

Этот цикл делает то же, что и предыдущий while, но всё управление счётчиком собрано в одной строке.

foreach

Цикл foreach перебирает элементы массива по одному. На каждом шаге очередной элемент попадает в переменную:

<?php
 
$fruits = ['яблоко', 'груша', 'слива'];
 
foreach ($fruits as $fruit) {
    echo $fruit, "\n";
}

Счётчик здесь не нужен: цикл сам закончится, когда элементы кончатся. Подробнее о массивах — в следующей главе.

Накопление результата

Частый приём — завести переменную до цикла и менять её на каждом шаге:

<?php
 
$sum = 0;
 
for ($i = 1; $i <= 5; $i++) {
    $sum += $i;
}
 
echo $sum; // 15

break и continue

break прекращает цикл досрочно, а continue пропускает остаток текущего шага и переходит к следующему:

<?php
 
for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 === 0) {
        continue;
    }
    if ($i > 7) {
        break;
    }
    echo $i, ' ';
}
// 1 3 5 7

Чётные числа пропускаются, а на девятке цикл останавливается.

Частая ошибка

Если забыть изменить счётчик, получится бесконечный цикл: условие всегда истинно, и программа не остановится сама. На этом сайте такой код прервётся через 5 секунд, а на настоящем сервере может надолго занять процессор.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.