Програмиране на РНР. Цикли в РНР

Циклите в програмирането – това са неколкократно повтарящи се операции. Началото (точката на броене)се указва в началото на цикъла, а продължителността на неговото изпълнение се ограничава от някакви условия.


Пример за цикъл може да послужи копирането на няколко файла. Алгоритъма за изпълнение на тази задача може да се опише така: установяване на брояча за изкопирани файлове на нула, изкопирване на файл, проверка дали файловете са приключили или не, ако не - увеличаване стойността на брояча, връщане в началото на цикъла (отново изкопиране на файл), и ако условието е да(истина) – приключване на цикъла. Сега да разгледаме, как се реализират циклите със синтаксиса на РНР.

<?php
$i = 0; $n = 10;
while ($i <= $n):
echo $i.”
”;
$i++;
endwhile;
?>

Смисълът на скрипта е следният. Присвояваме на променливата $i стойност, съответстваща на началото на цикъла, а на променливата $n – стойност за край на цикъла. После отваряме цикъла чрез оператора WHILE ( ), и вътре в неговите скоби описваме условието, при изпълнение на което цикълът ще продължи своята работа. В нашия случай изпълнението продължава, докато $i <= $n. Как только это условие будет нарушено, управление будет передано следующей за циклом операции РНР. Вътре в цикъла могат да бъдат различни команди на РНР (разделени една от друга както е обичайно – с точка и запетая). Трябва да се следи за увеличението на променливата $i, исползувана в цикъла, (това увеличение не е задължително да е единица), иначе цикълът става безкраен, и РНР интерпретатора ще го изпълнява, докато не затвориме сесията (прозореца на браузъра). Оператора ENDWHILE означава край на цикъла. Скрипта, описан тук, извежда на екрана на браузъра числата от 0 до 10. Числата ще бъдат изведени в стълб, защото след извеждане на екрана на поредната стойност на променливата $i ние извеждаме HTML-тага за преминаване на нов ред (
). За пример ще приведем още един вариант за изпълнение на указаната горе задача, но значително по-правилно в смисъла за чистота на кода и скорост на изпълнение.

<?php
$i = 0; while ($i <= 10) { echo $i++.”
”; }
?>



Удивително, но тези два примера са абсолютно идентични в смисъл на резултат. Но самият скрипт се вмести в един ред! Разликата в употребата на различен стил при прилагане на оператора за цикъл е и в това, че променливата на цикъла се извежда на екрана едновременно с увеличението и. И в това е цялата прелест на програмирането. Ето Ви още един вариант на решение. Основава се на употреба на конструкцията в РНР- DO…WHILE. Това също е цикъл, но се отличава от WHILE по това, че стойноста на логическия израз се проверява не преди (както е в случая с WHILE), а след приключване на работата с операторите, включени в самия цикъл. По такъв начин, DO…WHILE гарантирано ще бъде изпълнен поне един път, докато в случая с WHILE съвсем не е задължително. Ако условието е лъжа, управлението веднага ще бъде предадено по-нататък. За цикъла DO..WHILE съществува само един вид на синтаксиса:

<?php
$i = 0; do { echo $i.”
”; $i++; } while ($i <=10);
?>


Достатъчно варианти, но това не е всичко - съществуват още няколко варианти за цикъл. И, както е правилото, именно те се използуват от програмистите. Цикълът FOR - най-мощният в PHP. Работи подобно на аналогичните в езика C. Синтаксис на цикъла FOR:

FOR (expr1; expr2; expr3) statement

Първият израз (expr1) безусловно се изчислява (изпълнява) в началото на цикъла. В началото на всяка итерация (преход през цикъла) се изчислява израза expr2. Ако той е TRUE (истина), то цикълът продължава и изпълнява вложения(те) оператор(и). Ако той е FALSE (лъжа), то цикълът приключва. В края на всяка итерация се изчислява (изпълнява)израза expr3. Всеки от тези изрази може да бъде празен. Ако expr2 е празен, то цикълът продължава безкрайно (PHP по подразбиране ще отчете че е TRUE, както е и в езика С). Това не е така безполезно, както може би изглежда, така както често се налага прекратяване на изпълнението на цикъла използувайки оператора BREAK в съчетание с логическо условие вместо използване на логически израз във FOR. Ако вътре в цикъла (който и да е)се среща този оператор (BREAK), цикълът безусловно прекратява изпълнението на итерациите, и управлението се предава на следващите цикъла команде. Ако попаднем на оператора CONTINUE – управлението се предава в началото на следващия най-близък цикъл. За пример ще разгледаме, как още може да се реализира извеждането на екрана на потребителя на списък с числа. Не забравяйте за прехода от HTML в PHP.

/* пример 1 */

for ($i = 1; $i <= 10; $i++)
{ print $i; }

/* пример 2 */

for ($i = 1;;$i++)
{ if ($i > 10) { break; } print $i; }

/* пример 3 */

$i = 1; for (;;)
{ if ($i > 10) { break; } print $i; $i++; }

/* пример 4 */

for ($i = 1; $i <= 10; print $i, $i++) ;


Урока е изготвен от www.transcode.org


/ Трябва да сте регистриран за да напишете коментар /