Цикл for в PHP: урок с примерами

Цикл for: работаем с числами

Всем привет! В этом уроке поговорим об еще одном цикле в PHP – for. Он предназначен для случаев, когда нужно работать с числовыми индексами массивов, или же когда нужно осуществлять перебор чисел. Он поначалу кажется более сложным, чем foreach или while, но на самом деле ничего сложного нет.

Выглядит цикл следующим образом:

<?php

for (expr1; expr2; expr3) {
    //loop body
}

Как мы видим, есть 3 выражения, которые находятся в круглых скобках. Давайте разберем каждый из них.

  • expr1 – это выражение выполняется только один раз перед началом цикла. Здесь обычно происходит определение переменной.
  • expr2 – здесь задаётся условие. Если результат этого выражения – true, то цикл выполнится, иначе – закончится. Например, здесь можно проверить, что переменная меньше какого-либо значения.
  • expr3 – тут указывается действие, которое будет выполняться в конце каждой итерации цикла. Например – переменная увеличивается на единицу.

Пример можно? Да пожалуйста!

Давайте теперь рассмотрим реальный пример:

<?php

for ($i = 0; $i < 100; $i++) {
    echo $i;
    echo '<br>';
}

Данный код выведет все числа от 0 до 99.

  1. Итак, перед началом цикла мы определяем переменную $i = 0.
  2. Затем, перед тем как выполнить цикл, мы проверяем, что переменная $i меньше 100. Если это так, то выполнится тело цикла. А именно – выведется текущее значение переменной и выполнится перенос строки.
  3. Следующим шагом будет выполнение третьего выражения – инкремент переменной $i.
  4. Теперь снова будет выполнена проверка условия, что $i < 100. И так далее, пока условие не перестанет выполняться. А если быть точнее – пока $i не станет равной 100. Тут цикл завершит работу.

Есть ещё что-то, что нужно знать?

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

<?php

$i = 0;
for (; $i < 100; $i++) {
    echo $i;
    echo '<br>';
}

Работать такой код будет так же, как и предыдущий вариант. Просто перед началом цикла не будет ничего выполнено.

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

<?php

$i = 0;
for (; $i < 100;) {
    echo $i++;
    echo '<br>';
}

Более того, могут вообще отсутствовать все аргументы. При отсутствии второго аргумента получится бесконечный цикл:

<?php

for (;;) {
    //этот код будет выполняться бесконечно
}

Где это применимо?

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

Давайте рассмотрим несколько примеров.

Найти все чётные числа от 1 до 50 и вывести их

<?php

for ($i = 1;$i <= 50;$i++) {
    if ($i % 2 === 0) {
        echo $i;
        echo ' ';
    }
}

Создать массив из 50 случайных значений

<?php

$randomValues = [];

for ($i = 1;$i <= 50;$i++) {
    $randomValues[] = mt_rand();
}

var_dump($randomValues);

Посчитать сумму чисел от 1 до 1000

<?php

$sum = 0;
for ($i = 1;$i <= 1000;$i++) {
    $sum += $i;
}

echo $sum;

Как видите, данные задачи элегантно решаются с использованием цикла for. В следующих уроках мы рассмотрим ещё несколько фишек с циклами и научимся реализовывать более сложные алгоритмы. Не забудьте подписаться, чтобы не пропустить новые уроки. А пока поэкспериментируйте с задачами из домашнего задания.

Присоединяйтесь к нам в Twitter, ВКонтакте, Facebook и Google+, а также вступайте в наш чат в Telegram, чтобы не пропустить новые уроки и быть в курсе последних новостей из мира веб-разработки.
Домашнее задание

  • Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.
  • Найдите числа Фибоначчи меньше 100000. Числа Фибоначчи – это последовательность чисел, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.
    Должно получиться: 0, 1, 1, 2, 3, 5, 8 ...