Як працюють цикли, Види циклів
Цикли дозволяють багаторазово виконувати блок коду. Це необхідно для вирішення безлічі завдань. Наприклад, перебір записів, отриманих з бази даних, Прогресивне читання файлу або обхід елементів масиву. У РНР є чотири типи циклів: while. do..while. for і foreach. Перші три описуються далі, а foreach - при обговоренні масивів далі.
Конструкція while є простим оператор циклу. Блок операторів виконується, поки вірно умова.
Розглянемо роботу циклу докладніше:
- Перевірка умови.
- Якщо воно істинне, виконання операторів; якщо помилково - вихід з циклу.
- Перехід до кроку 1.
Для управління циклом звичайно потрібно одна або кілька змінних. Наприклад, цілочисельне значення, кожен раз що збільшується на одиницю. Ці змінні так і називаються - керуючі змінні циклу.
Розглянемо простий приклад виводачісел від 1 до N:
Іноді керуюча змінна циклу буває булевої. Наприклад, при читанні в циклі рядків файлу можна використовувати змінну булева типу, що визначає кінець файлу.
Цикли do..whileаналогічни циклам while. за винятком того, що условіепроверяется не на початку, а в кінці кожної ітерації. Це означає, що цикл буде виконано. по крайней мере, один раз.
Розглянемо роботу циклу:
- Виконання блоку операторів.
- Перевірка умови.
- Якщо воно істинне, перехід до кроку 1; якщо помилково - вихід з циклу.
У прикладі нижче одиниця буде виведена, навіть якщо N = 0.
Цикл do..while використовують досить рідко через його громіздкість і поганий читання. Краще злегка змінити алгоритм (від чого він, швидше за все, виграє) і пріменітьfor або while.
Цикл for - шедевр лаконічною організації коду, що прийшов з мови Сі. Конструкція дозволяє одним рядком повністю определітьповеденіе циклу:
Вираз1 обчислюється перед початком циклу. Зазвичай в ньому инициализируется керуюча змінна. Вираженіе2 обчислюється на початку кожної ітерації циклу. Цей вислів веде так само, як умова циклу while. якщо значенням Вираженія2 виявляється true. цикл триває. інакше - зупиняється. Вираз3 обчислюється в кінці кожної ітерації і, як правило, використовується для зміни значення керуючої змінної циклу.
Хід виконання циклу:
- Виконання Вираженія1.
- Перевірка Вираженія2.
- Якщо воно істинне, перехід до кроку 4; якщо помилково - вихід з циклу.
- Виконання блоку операторів.
- Виконання Вираженія3.
- Перехід до кроку 2.
Розглянемо той же приклад виведення чисел від 1 до N:
Приклад демонструє найбільш частоепрімененіе конструкції for. форматувати керуючу змінну, порівняти змінну зі значенням, інкрементіровать або декрементіровать значення. Однак for може використовуватися і іншими способами.
Так само, як в Сі та інших мовах, допускається не вказувати одне або більше виразів (якщо не вказано Вираженіе2, вважається, що воно true). Цикл while завжди можна замінити циклом for.
Наступні дві конструкції еквівалентні.
Варіант 1 .
Нескінченним називається цикл такого вигляду:
Для виходу з циклу можна використовувати оператор break.
Оператор break миттєво завершує виконання циклу. Якщо ж потрібно закінчити поточну ітерацію циклу і повернутися до перевірки його умови, можна скористатися оператором continue. Наступний приклад демонструє висновок непарних чисел від 1 до N:
Залишок від ділення на два парного числа дорівнює нулю, такі числа ми пропускаємо в наведеному прикладі. Правильніше вважається не використовувати оператори переривання циклу, а покладати логіку управління на умова. Намагайтеся організовувати цикли саме так.