Цикл WHILE в PHP

Александр Кичатов

Цикл WHILE выполняется, пока выражение в скобках принимает значение true.

Разберём на примере: необходимо вывести на экран числа от 1 до 10. С помощью цикла while эту задачу можно решить следующим образом:

<?php
    $i = 0;

    while($i < 10)
        echo ++$i;

Результат в браузере:

12345678910

Перед запуском PHP получает результат выражения в круглых скобках и приводит к булеву типу.

Если при первом запуске результат будет true - блок кода выполнится. Затем опять произойдёт вычисление результата выражения и повторное выполнение блока кода. И так до тех пор, пока результатом выражения не станет false.

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

Будьте аккуратны при работе с циклом while. Вы можете случайно сделать бесконечный цикл вроде такого:

<?php
    while(true)
        echo 'Привет!';

Если запустить этот скрипт, страница зависнет и через некоторое время в браузере отобразится ошибка.

Цикл WHILE и несколько условий

При желании в цикл WHILE можно подставить сколько угодно условий:

<?php
$a = 5;
$b = 10;
$c = 0;

while($a < 10 && $b < 20 && $c < 10)
    echo ++$a;

Задача 1

1. Создайте переменную $count с любым числовым значением, например 10.
2. С помощью цикла while выведите числа, количество которых равно $count, начиная с числа 1. Каждое последующее число должно быть больше предыдущего на 3. Т.е. при $count = 3 скрипт должен вывести 1 4 7.

$count = 10;
$num = -2;
$i = 0;

while($i < $count)
{
    $num += 3;
    echo $num, ' ';
    $i++;
}

Другой вариант:

$count = 10;
$i = 0;

while($i < $count)
{
    $result = $i === 0 ? 1 : 1 + $i * 3;
    echo $result, ' ';

    // Или в одну строку:
    # echo ($i === 0 ? 1 : 1 + $i * 3), ' ';

    $i++;
}

Задача 2

1. Создайте следующий массив: $arr = [3, 4, 9, 18, 22];
2. Напишите скрипт, который с помощью while переберёт все значения массива и выведет их на экран.

<?php
$arr = [3, 4, 9, 18, 22];
$i = 0;

while($i < count($arr))
    echo $arr[$i++], ' ';

Комментарии