Цикъла е конструкция, която ви позволява да повтаряте отново и отново даден набор от инструкции дотогава, докато зададеното в цикъла условие връща резултат „истина“. Вие може да определите точно числото на повторенията или броя повторения може да зависи от определени едно или повече условия.

1. Конструкция while
Конструкцията с ключова дума while има следния синтаксис:

while (израз за проверка) {прави това}

Т.е. с тази конструкция все едно казваме: „Докато е вярно това трябва да правиш ето това“. Цикъла while борави с булеви резултати (истина и неистина). Докато израза в кръглите скоби, чиято истинност се проверява, връща резултат true (истина), дотогава ще бъде изпълняван кода, указан в големите скоби. В момента в който резултата от условието за проверка стане false (неистина) изпълнението на цикъла се прекъсва.

Да разгледаме следния пример:

<?php

$prom1 = 100;
$prom2 = 50;

while ($prom2 < $prom1)

{
$prom2++;

echo „$prom2<br />“;
}

?>

В горния код е дадено за изпълнение следното:

1. Присвоени са стойностите 100 и 50 съответно на променливите $prom1 и $prom2
2. Зададено е условието – докато стойността на $prom2 е по-малка от стойността на $prom1 прибавяй по една единица към стойността на $prom2
3. Резултата от промяната на променливата $prom2 е изведен на екран.

Визуалния резултат, генериран от горния код, ще бъде поредицата числа от 51 до 100, като за по-голяма прегледност чрез <br /> е зададено всяко отделно число да е на отделен ред. T.e. при всяко изпълнение на цикъла към стойността на променливата $prom2 е прибавяна по единица, докато стойностите на двете променливи не се изравнят.

2. Конструкция do-while
Синатсисът на конструкцията while е такъв, че ако зададеното в кръглите скоби условие върне резултат „неистина“ още при първата проверка за истинност, тогава кода в големите скоби изобщо няма да се изпълни. Понякога обаче е необходимо поне едно изпълнение на цикъла. В такъв случай се ползва конструкцията do-while. Тя има следния синтаксис:

do {прави това} while (израз за проверка на истинност)

Т.е. дори още първата проверка на условието да върне резултат „неистина“, все пак ще получим еднократно изпълнение на цикъла, тъй като израза за проверка истинността на условието е след нареждането за първоначално изпълнение.

Пример:

<?
$prom1 = 100;
$prom2 = 50;
do
{
echo „Това съобщение ще се покаже поне веднъж.<br />“;
}
while(++$prom1 < $prom2)
?>

В горния код стойността на $prom1 (100) е по-голяма от стойността на $prom2 (50), а зададеното условие е да се показва изречението „Това съобщение ще се покаже поне веднъж“ докато $prom1 е по-малко от $prom2, т.е. докато 100 е по-малко от 50. Този цикъл ще върне „невярно“ още при първото си изпълнение, понеже 100 не е по-малко от 50, но все пак ще имаме едно изпълнение на цикъла, т.е. едно показване на екран на изречението „Това съобщение ще се покаже поне веднъж“. Ако разменим стойностите на двете променливи в същия код, тогава изречението ще бъде изведено на екрана 50 пъти.

3. Конструкция for
Често използвана е също конструкцията for. С нейна помощ се постига повече контрол над изпълнявания цикъл. Синтаксиса на for е следния:

for (променлива-брояч с начална стойност; условие; нова стойност на променливата-брояч) {направи това}

В кръглите скоби след ключовата дума for има 3 елемента:

1. Задава се някаква начална стойност на променлива, от която начална стойност да започва изпълнението на цикъла. Тази променлива се явява брояч на това колко пъти ще се изпълни цикъла. Често в скриптовете тази променлива носи названието $i (от „инициализираща“. т.е. начална стойност).
2. Поставя се условието, като цикъла се изпълнява докато поставеното условие връща резултат „истина“.
3. Задава се увеличение на началната стойност на променливата.

Трите елемента се отделят един от друг чрез точка и запетая.

Преди всяко изпълнение на цикъла условието се проверява за истинност и ако резултата е true цикъла се изпълнява отново, като при това се увеличава стойността на променливата-брояч. Цялата конструкция дава възможност да се настрои точно определен брой пъти на изпълнението на цикъла.

Един най-прост пример с цикъла for е следния код:

<?php

for ($i = 1; $i <= 5; $i++)
{
echo $i;
}

?>

Горния код ще ни даде като резултат поредицата цифри от 1 до 5, тъй като е зададено началната стойност при изпълнение на цикъла да бъде 1 ($i = 1), при всяко следващо повторение на цикъла стойността на $i да се увеличава с единица ($i++), а в условието е зададено цикъла да продължи да се изпълнява докато стойността на променливата $i е по-малка или равна на 5 ($i <= 5). Следователно цикъла ще се изпълнява докато началната стойност 1 не нарастне до 5, т.е. ще имаме 5 повторения на цикъла.

Можем да усложним малко този пример:

<?php

for ($broi = 5; $broi < 20; $broi++)

{
$rezultat = $broi + 100;

echo „$broi + 100 = $rezultat<br />“;
}

?>

Горния код извършва следното:

– на променливата-брояч $broi е зададена начална стойност 5 ($broi = 5;)
– поставеното условие е: скрипта се изпълнява докато стойността на брояча е по-малка от 20 ($broi < 20;)
– зададено е началната стойност на променливата-брояч да се инкрементира при всяко изпълнение на цикъла ($broi++), т.е. да се увеличава с единица при всяко следващо изпълнение на цикъла.

След това започва изпълнението на зададеното в конструкцията {$rezultat = $broi + 100;}. При първото изпълнение началната стойност на променливата-брояч е събрана със сто. Понеже началната стойност е 5, операцията е сбор на 5 със 100, което е 105. Резултата се присвоява на променливата $rezultat, показва се на екрана чрез echo и цикъла започва следващото си изпълнение. Тъй като е зададено променливата-брояч да се инкрементира, т.е. да увеличава стойността си с единица при всяко следващо изпълнение на цикъла, то при следващото изпълнение на цикъла нейната стойност ще бъде 6, съответно сбора вече ще бъде 6 + 100 и резултата ще е 106. При третото изпълнение на цикъла резултата ще е 107 и т.н.

По този начин цикъла ще се изпълнява докато израза за проверка не върне резултат „неистина“. Според зададеното условие цикъла ще се изпълнява докато началната стойност 5 е по-малка от 20. Тъй като на всяко изпълнение началната стойност се увеличава с единици, то цикъла ще се изпълни 15 пъти (докато стойността на променливата не нарастне от 5 до 19).