Циклы

Понятие циклов

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

Мы привыкли, что сценарии выполняются линейно: сверху вниз, строчка за строчкой. Но что делать, если надо повторить какую-нибудь инструкцию несколько раз? Например, как вывести на экран натуральные числа от 1 до 9?

Есть очевидный способ:

<?php
print(1);
print(2);
print(3);
// и так далее...

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

Использование циклов значительно упрощает и укорачивает код. Циклы незаменимы в ситуациях, когда заранее неизвестно сколько раз должен выполниться блок кода. Такое число зависит от множества условий и вычисляется в момент выполнения сценария.

Так выглядит цикл в PHP:

<?php
while (<условие цикла>) {
<тело цикла>
}

Использование выражений в циклах

В прошлой главе вы познакомились с понятием выражения и его истинностью.

Выражение часто используется в циклах, оно помещается на место <условие цикла=""> и определяет, будет ли исполнен блок кода — <тело цикла="">.

Если выражение из условия цикла возвращает истину, то выполнение сразу перейдёт к блоку «тело цикла». Если же оно вернёт ложь, то тело цикла не будет исполнено. Сценарий продолжит выполняться, как обычно, со следующей строки после цикла.

Название «циклы» отражает суть их действия — они «зацикливают» линейное исполнение на своём блоке кода и не дают сценарию выполняться дальше, пока условие цикла будет истинным.

👉 Последовательность исполнения кода при использовании циклов:

  1. Обычное исполнение кода, строчка за строчкой, пока не встретился цикл.
  2. Встретился цикл: выполняем условие цикла.
  3. Если условие вернуло ложь: выходим из цикла, выполняем строчку после цикла и продолжаем линейное исполнение.
  4. Если условие вернуло истину: выполняем всё тело цикла.
  5. Повторяем пункт 2.

Каждая последовательность из шагов 2 — 4, то есть очередное выполнение кода в теле цикла — называется итерацией.

Количество итераций должно быть конечным, бесконечное выполнение одного блока кода не входит в наши планы.

А значит, необходимо заранее предусмотреть ситуацию, когда истинное условие станет ложным.

Теперь вернёмся к задаче по выводу на экран всех натуральных чисел:

<?php
$last_num = 1;

while ($last_num < 10) {
    print($last_num);
    $last_num = $last_num + 1;
}

Этот цикл в своём теле содержит две инструкции. Первая выводит на экран цифру из переменной. Вторая инструкция увеличивает значение переменной на единицу. Сколько раз будет исполнен такой цикл?

Циклы выполняются, пока их условие остаётся истинным, а в нашем условии значение переменной должно быть меньше десяти. Так как начальное значение переменной — единица, то несложно посчитать, что цикл выполнится ровно девять раз. На десятый раз значение переменной $last_num станет равно десяти и условие $last_num < 10 перестанет быть истинным.

Операторы continue и break

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

<?php
for ($i = 1; $i < 10; $i++)
{
    $result = $i * $i;
    if($result>80)
    {
        break;
    }
    echo "Квадрат числа $i равен $result <br/>";
}
?>

И если вдруг результат операции окажется больше 80, то происходит выход из цикла.

Для управления циклами также применяется оператор continue. Он осуществляет переход к следующей итерации цикла:

<?php
for ($i = 1; $i < 10; $i++)
{
    if($i==5)
    {
        continue;
    }
    echo "Квадрат числа $i равен " . $i * $i . "<br/>";
}
?>

При выполнении программы, когда значение $i станет равным 5, произойдет переход к следующей итерации, а все остальные выражения, которые следуют после оператора continue выполняться не будут.

Вложенные циклы

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

<!DOCTYPE html>
<html>
<head>
<title>Циклы в php</title>
<meta charset="utf-8" />
</head>
<body>
<table>
<?php
for ($i = 1; $i < 10; $i++)
{
    echo "<tr>";
    for ($j = 1; $j < 10; $j++)
    {
        echo "<td>" . $i * $j . "</td>";
    }
    echo "</tr>";
}
?>
</table>
</body>
</html>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *