Цикл while
Ви вже навчилися змінювати хід виконання PHP-програми на основі результатів порівняння, а тепер настав час дізнатися наступний момент: якщо ви хочете, щоб дії повторювалися до тих пір, поки операція порівняння не поверне значення FALSE, потрібно використовувати .
Кожне окреме виконання послідовності інструкцій у циклі називається ітерацією. Цикли дуже зручні для виконання таких поширених завдань, як відображення результатів запиту, коли в циклі виконується обхід всіх отриманих рядків. Для організації циклів PHP надає конструкції while, for та do. while. Кожен цикл складається із двох основних частин. Перша визначає, коли має бути зупинено виконання циклу і нагадує операцію порівняння в інструкції if. Друга – власне фрагмент програми, що виконує необхідні дії, який може складатися з єдиного рядка або кількох рядків, які укладені у фігурні дужки.
Типова логічна помилка - відсутність у тілі циклу програмного коду, що впливає на умову припинення роботи циклу, що може призвести до створення нескінченного циклу. Програмний код циклу виконується до тих пір, поки умовний вираз повертає значення TRUE. Щоб уникнути нескінченного циклу, який буде крутитись вічно, код тіла циклу повинен змусити умовний вираз у певний момент повернути значення FALSE. Коли це станеться, робота циклу припиниться, і виконання продовжиться з рядка коду, розташованого безпосередньо після циклу.
Цикл while
Цикл while обчислює умовний вираз. Залежно від результату цього обчислення виконується наступний фрагмент коду. На малюнку нижче показано блок-схему даного циклу, яка ілюструє порядок роботи циклу while:

Приклад нижчеілюструє використання циклу while:
Цикл while, тіло якого виповнюється 10 разів

Перед початком циклу значення змінної $num встановлюється рівним 1. Це називається ініціалізацією змінної-лічильника. Щоразу, коли виконується блок коду, за допомогою інструкції $num++ значення змінної $num збільшується на 1. Після десяти ітерацій вираз $num Цикл do-while
Цей фрагмент виведе:

Якби ми використовували цикл while з цим умовою, він не виконався б жодного разу, т.к. змінна $num = 11 > 10. У разі використання циклу do-while виконується щонайменше одна ітерація циклу. У нашому прикладі в цій ітерації відбувається декремент змінної $num і вона дорівнює 10, внаслідок чого виконуються наступні ітерації циклу, до тих пір поки $num > 1.
Цикли for у загальному вигляді надають ті ж функціональні можливості, що й цикли while, а також дозволяють ініціалізувати і змінювати значення лічильника циклу. Цей цикл має наступний синтаксис та блок-схему:

Нижче наведено приклад використання циклу for, в якому досягається аналогічний результат як у прикладі з циклом while:
Приклад використання циклу for
Виконуючи цикл for, PHP спочатку обчислює вираз ініціалізації. У кожній ітерації виконується частина коду, яка збільшує лічильник, а потім перевіряється умовний вираз, щоб дізнатися, чи не час завершити цикл. В результаті виходить компактніша і проста для сприйняття інструкція.
При визначенні циклу for можна опустити будь-який із трьох виразів, наприклад вираз ініціалізації, але розділові точки із комами (;) слід ставити завжди. Цикл for без ініціалізації наведено в прикладі нижче:
Цикл for без вираження ініціалізації
Крім того, допускається включення замість кожного окремого виразу в циклі для декількох виразів, розділених комами. Умова розглядається як істинна, якщо будь-яке з її виразів є істинним. Таким чином, кілька подвиражений, розділених комами, еквівалентні одному виразу, з'єднаному операціями або. Наприклад:
Цикл for з кількома виразами
Оператори break і continue
Стандартний спосіб виходу з циклічної конструкції полягає у створенні такої умови, що перевірка головного виразу циклу призводить до отримання хибного значення. Ще один спосіб виходу з усіх циклічних конструкцій, включаючи while, do-while і for, полягає у використанні спеціальних команд break і continue, які підпорядковуються описаним нижче правилам:
Команда break забезпечує вихід із самої внутрішньої циклічної конструкції, яка містить цю команду.
Команда continue дозволяє перейти в кінець поточної ітерації внутрішньої циклічної конструкції, яка містить цю команду.
Наприклад, виконання наступного коду:
не виводить нічого, оскільки число 1 є непарним і тому цикл негайно закінчується. З іншого боку, код
виводить рядок "2 4 6 8" оскільки оператор continue дозволяє пропустити всі оператори, у яких було б виведено непарні числа.
Команда break дозволяє програмісту вибрати варіант організації циклу, який повністю виключає необхідність перевірки головної умови завершення циклу. Розглянемо наступний код, який забезпечує формування та виведення списку простих чисел (тобто чисел, які діляться лише на саме це число чи одиницю):
У наведеному вище коді є два цикли while, у зовнішньомуциклі здійснюється перебір всіх чисел від 1 до 500, а у внутрішньому фактично перевіряється ділимість за допомогою кожного можливого дільника. Якщо у внутрішньому циклі виявляється хоча б один дільник, то число, що розглядається, не є простим, тому робота циклу переривається без виведення будь-якого значення. Якщо ж, з іншого боку, перевірка сягає потенційного дільника, який менше квадратного кореня аналізованого числа, можна впевнено припустити, що це число є простим, тому внутрішній цикл переривається після виведення даного числа. Нарешті, зовнішній цикл переривається після досягнення значення граничної кількості чисел, що перевіряються. У даному випадку результатом є список простих чисел менше 500:

Зверніть увагу на вкрай важливу властивість, яка ілюструється в цьому коді, що полягає в тому, що оператор break перериває лише той цикл while, в тілі якого він знаходиться.
Ще один цикл, який ми не розглянули - це цикл foreach, який використовується тільки для перебору в циклі вмісту масивів. Цей цикл буде розглянуто під час обговорення масивів.