4.3. Цикл while

Цикл while перекладається як «поки умова істинно (true)». Записується він так:

1
2
3
4
5
<?php
while( условие  ){
    Код;
}
?>

Для того, щоб цей цикл while працював, у нас в умови має бути true. Давайте відразу розглянемо приклад:

1
2
3
4
5
6
7
$int = 10;
while($int < 50){
    $int +=2;
    $int++;
    echo $int;
}
?>

Тут майже все точно також, як в циклі for. Ми присвоюємо змінної якесь значення, а далі крутиться цикл, до тих пір, поки $ i менше 50, у нас буде виконуватися код всередині циклу, тобто висновок змінної $ int. І for і while - вони взаємозамінні. Тому можна використовувати або while, або for.

Однак, для того щоб все таки відчути різницю в їх використанні, скажу, що цикл for я використовую в тих випадках, коли мені заздалегідь відомі початкове і кінцеве значення. Наприклад, мені потрібно прокрутити цикл від 1 до 100, тоді я використовую for. А от коли нам заздалегідь не відома кінцева точка, як наприклад, читання файлу порядково. Тут ніколи не знаєш скільки у файлу рядків. Ось в цьому випадку дуже добре підходить цикл while.

Бувають ситуації, коли цикл повинен пройти цілком, але і буває так, що при якійсь ситуації він повинен перерватися. Для цього у нас є можливість керувати ними. Способи керування:

1) оператор break -  викидає нас з циклу при виникненні якогось умови. У цьому прикладі, якщо $ n дорівнюватиме 10, ми вилітаємо з циклу і цикл зупиняється. І в браузер нам виведеться 123456789 і все, так як у нас є умова, якщо $ n == 10, цикл зупиниться.

1
2
3
4
5
6
7
8
9
10
<?php
$n = 5;
while($n < 1000){
    echo $n."<br />";
    $n++;
    if($n == 10) {
        break;
    }
}
?>

2) оператор continue - перекидає нас назад до умови. Цей приклад, на відміну від першого, виведе всі крім числа 10.

1
2
3
4
5
6
7
8
<?php
$n = 5;
while($n < 100){
    $n++;
    if($n == 10) continue;
    echo $n."<br />";
}
?>

У циклу while, та й циклу for теж є один недолік. Вони можуть ніколи не виповнитися, якщо початкова умова буде false. наприклад:

1
2
3
4
5
6
7
8
<?php
$n = 1000;
while($n < 100){
echo $n."<br />";
$n ++;
}
// цей цикл не виконається ні разу
?>

Для цих цілей у нас є цикл, який називається do while або він ще називається «while з пост умовою».Він записується так:

1
2
3
4
5
<?php
do{
    Код;
}while(условие)
?>

PHP завжди гарантовано зайде в цей цикл, виконає код, а потім тільки перевірить умова, тобто виходить, що якщо умова помилкова, то цикл все одно виконається один раз.