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 завжди гарантовано зайде в цей цикл, виконає код, а потім тільки перевірить умова, тобто виходить, що якщо умова помилкова, то цикл все одно виконається один раз.