Цикли в PHP
Для програмування повторюваних процесів використовуються цикли, які є практично у всіх сучасних мовах програмування.

Існує спосіб припинити виконання циклу негайно. Для цього застосовується оператор Break:
Можливо достроково припинити поточну ітерацію та перейти одразу до початку наступної ітерації. Для цього застосовується оператор Continue:
У вкладених циклах оператори Break за замовчуванням діють кожен своєму рівні вкладення. Але можна керувати не лише своїм циклом, а й зовнішнім циклом, для цього слід зазначити його номер. За замовчуванням, якщо передати значення Break 1, його дії будуть належати поточному циклові. Якщо оператору Break, розташованому у внутрішньому циклі, передати номер 2, замість внутрішнього циклу він буде переривати зовнішній цикл.
Як і у випадку операторів If і Switch, оператор While підтримує синтаксис без фігурних дужок, використовуючи ключові слова while: і endwhile:
При використанні циклу do ... while також допускається застосування операторів Break та Continue. На відміну від інших операторів циклу, а також операторів If та Switch, цей вид циклу не підтримує альтернативний синтаксис.
Дозволено використання кількох операторів і в блоці ініціалізації:
Цикли For, як і будь-які інші цикли, можуть бути вкладені один в одного. Наведемо класичний приклад на вкладені цикли - програма знаходження простих чисел (числа, які діляться лише з 1 і самих себе).

Цикл While
Оператор While називається оператором циклу з передумовою та має наступний синтаксис:while (умова) {
оператори;
}Спочатку виконується умова, і якщо її значення істинно (True), виконується тіло циклу, яке буде виконуватися доти, поки значення висловлювання умови не стане хибним (False). Тіло циклу не обов’язково має бути укладено у фігурні дужки, якщо потрібно виконати лише один оператор, вони можуть бути опущені. Однак стандарт кодування PSR рекомендує їх використання.<?php
$i = 'a';
while ($i <= 'e') {
echo $i;
$i++;
}Результатом виконання коду є рядок латинських символів від символу A до E. Тіло циклу, розташоване між фігурними дужками, виконується доти, доки вираз $i <= 'e' не набуде значення False. При кожній ітерації циклу значення лічильника $i збільшується на один символ за допомогою оператора інкременту $i++. Як тільки значення змінної $i перевищує символ E, вираз приймає значення False і на наступній ітерації оператор While припиняє свою роботу.Існує спосіб припинити виконання циклу негайно. Для цього застосовується оператор Break:
<?php
$i = 'a';
while ($i <= 'e') {
if ($i == 'c') break;
echo $i;
$i++;
}Результатом роботи скрипта є рядок ab. Коли $i стає рівним символу C, останній оператор Echo у циклі не виконується.Можливо достроково припинити поточну ітерацію та перейти одразу до початку наступної ітерації. Для цього застосовується оператор Continue:
<?php
$i = 'a';
while ($i <= 'e') {
$i++;
if ($i == 'c') continue;
echo $i;
}
У цьому прикладі, якщо $i дорівнює символу C, все наступне після цього оператора в тілі функції While пропускається і починається новий цикл.У вкладених циклах оператори Break за замовчуванням діють кожен своєму рівні вкладення. Але можна керувати не лише своїм циклом, а й зовнішнім циклом, для цього слід зазначити його номер. За замовчуванням, якщо передати значення Break 1, його дії будуть належати поточному циклові. Якщо оператору Break, розташованому у внутрішньому циклі, передати номер 2, замість внутрішнього циклу він буде переривати зовнішній цикл.
Як і у випадку операторів If і Switch, оператор While підтримує синтаксис без фігурних дужок, використовуючи ключові слова while: і endwhile:
<?php
$i = 'a';
while ($i <= 'e'):
echo $i;
$i++;
endwhile;Цикл do ... while
На відміну від циклу While, цикл Do ... while перевіряє умову виконання циклу не на початку ітерації, а наприкінці і має наступний синтаксис:do {
оператори;
} while (умова);Таким чином, цикл завжди буде виконаний хоча б один раз. Після виконання тіла циклу обчислюється вираз умови, і якщо він істинний (True), знову виконується тіло циклу.<?php
$i = 1;
do {
echo $i;
} while ($i++ < 5);У цьому прикладі одиниця завжди буде додана до списку, незалежно від значення умови $i++ < 5. Результатом цього прикладу будуть виведені числа від 1 до 5.При використанні циклу do ... while також допускається застосування операторів Break та Continue. На відміну від інших операторів циклу, а також операторів If та Switch, цей вид циклу не підтримує альтернативний синтаксис.
Цикл For
Ітераційний цикл For має наступний синтаксис:for (початок; умова; тіло) {
оператори;
}Оператор Початок є послідовністю визначень і виразів, що розділяються комами. Тут встановлюються початкові значення лічильників та параметрів циклу та обчислюються лише один раз при вході в цикл. Цикл виконується доти, доки Умова істинна (True), і припиняє свою роботу, коли вона хибна (False). За відсутності Умови передбачається, що її значення завжди є істинним. Тіло виразу обчислюється наприкінці кожної ітерації після виконання тіла циклу. При використанні циклу For також допускається застосування операторів Break та Continue.<?php
for ($i = 'a'; $i <= 'e'; $i++) {
echo $i;
}Результатом прикладу буде виведення латинських символів abcde. Тут значення $i на початку роботи циклу приймає значення, що дорівнює символу A ($i = 'a'), на кожній ітерації циклу значення змінної $i збільшується на 1 символ по черзі латинського алфавіту за допомогою оператора інкремента ($i++). Цикл виконує свою роботу до тих пір, поки значення $i менше або дорівнює символу E.Дозволено використання кількох операторів і в блоці ініціалізації:
<?php
for ($i = 1, $str = 'a';
!empty( $str ) && strlen( $str ) == 1;
print "$i - $str", print "<br />", $i++, $str++);В результаті роботи циклу з прикладу будуть виведені всі символи латинської абетки з порядним номером:1 – a
2 – b
…
25 - y
26 - zЦей підхід наведено лише для демонстрації особливостей роботи циклу For і не рекомендується до застосування.Цикли For, як і будь-які інші цикли, можуть бути вкладені один в одного. Наведемо класичний приклад на вкладені цикли - програма знаходження простих чисел (числа, які діляться лише з 1 і самих себе).
for ($i = 2; $i < 100; $i++) {
for ($j = 2; $j < $i; $j++) {
if (($i % $j) != 0) {
continue;
} else {
$flag = true;
break;
}
}
if (!$flag) echo "$i ";
$flag = false;
}Цей приклад реалізований у вигляді двох вкладених циклів, у яких здійснюються перебір та перевірка залишку від розподілу за модулем пари чисел. Перше число змінюється від 2 до 100, а друге – від 2 до значення першого числа. Якщо залишок від розподілу не дорівнює нулю, то оператор Continue здійснюється продовження внутрішнього циклу, оскільки цей оператор наказує програмі перейти на наступну ітерацію циклу. Якщо ж залишок від розподілу дорівнює нулю, то відбувається вихід з внутрішнього циклу по оператору Break. У цьому логічна змінна $flag, у якому встановлюється ознака поділу, набуває значення True. По закінченні внутрішнього циклу проводиться аналіз логічної змінної та виведення простого числа. Результат роботи скрипту:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 Як і у випадку операторів If та Switch, оператор For підтримує синтаксис без фігурних дужок з використанням ключових слів For та Endfor:<?php
for ($i = 'a'; $i <= 'e'; $i++) :
echo $i;
endfor;Foreach
Цикл Foreach спеціально створений для асоціативних масивів і має наступний синтаксис:foreach ($array as [$key =>] $value) {
оператори;
}Цикл Foreach послідовно обходить всі елементи масиву $array, поміщаючи при кожній ітерації циклу ключ у змінну $key, а значення у змінну $value. Імена цих змінних можуть бути будь-якими.<?php
$arr = [
'first' => '1',
'second' => '2',
'third' => '3'
];
foreach ($arr as $index => $val) {
echo $index . ' = '. $val;
}Результатом роботи прикладу будуть наступні рядки:first = 1
second = 2
third = 3#самовчитель_php 