Cykly v PHP (PHP - časť 5)

Vetvenie programu pomocou cyklov si ukážeme v dnešnej piatej časti nášho seriálu o scriptovacom jazyku PHP. Ukážeme si ako fungujú príkazy ako WHILE, DO...WHILE, FOR, SWITCH a CONTINUE.

Cykly a ako na ne.

WHILE

Ide o najjednoduchší typ cyklu. Má podobnú syntax ako v C:

 while (výraz) príkaz;

Príkaz je vykonávaný dovtedy, kým je hodnota výrazu TRUE. Nazýva sa aj cyklus s podmienkou na začiatku. Vždy na začiatku cyklu sa otestuje výraz a v prípade, že hodnota je TRUE, vykoná sa príkaz a opäť od začiatku. V prípade, že potrebujeme vykonať viacero príkazov (takmer vždy), musíme použiť blok, teda príkazy uzavrieť do zložených zátvoriek:

 while (výraz) {
  príkaz1;
  príkaz2;
  atd...
 }

Cyklus while samozrejme tiež umožňuje alternatívnu syntax. Tá je podobná, ako bola pre IF, tu nám poslúži konštrukcia while(výraz): a endwhile, pričom syntax je nasledovná:

 while (výraz):
   príkaz1;
   príkaz2;
   atd...
 endwhile;

DO..WHILE

Cyklus do..while je veľmi podobný cyklu while. Rozdiel tkvie v tom, že zatiaľ čo v predchádzajúcom prípade bola podmienka testovaná na začiatku, tu je to zase na konci. Z toho vyplýva, že cyklus do..while musí prebehnúť minimálne raz, zatiaľ čo pre cyklus while toto neplatí. Syntax cyklu do..while je nasledovná:

 do {
  príkaz1;
  príkaz2;
  atd...
   } while (podmienka);

Môže sa stať, že budete potrebovať cyklus, ktorý bude nekonečný a bude sa dať ukončiť iba zvnútra cyklu. Na to nám poslúži príkaz break:

 do {
  if (podmienka) break;
 } while (0);

Posledný riadok nám zabezpečí, že cyklus sa nikdy neukončí (0 je vždy vyhodnocovaná ako FALSE) a dá sa ukončiť iba v prípade, že je splnená podmienka príkazom break.

FOR

Cyklus for je jedným za najkomplexnejších v PHP. Jeho syntax je opäť podobná Céčku:

 for (výraz1; výraz2; výraz3) príkaz1;

výraz1 je vyhodnotený (vykonaný) iba raz, na začiatku cyklu. výraz2 slúži ako kontrolná podmienka pre cyklus, pretoŽe je vyhodnocovaná na začiatku každej iterácie. V prípade, že je vyhodnotená ako TRUE, je iterácie vykonaná, ak FALSE, celý cyklus končí. výraz3 slúži hlavne na modifikáciu riadiacej premennej a je vykonaný po skončení každej iterácie. Každý z týchto výrazov je nepovinný, takže konštrukcia cyklu for môže vyzerať aj takto:

 for (;;)
 {
  príkaz1;
  príkaz2;
  atd...
 }
 

Samozrejme tu nesmiete zabudnúť na modifikáciu a kontrolu riadiacej premennej vo vnútri a pred začiatkom cyklu, inak sa ľahko môže stať, že sa zacyklí. Aj cyklus for má svoju alternatívnu syntax:

 for (výraz1; výraz2; výraz3):
  príkaz1;
  príkaz2;
  atd...
 endfor;

CONTINUE

Ide o špeciálny príkaz, ktorý slúži na skok na ďalšiu iteráciu. Jednoducho povedané, ukončí momentálnu iteráciu skokom na koniec bloku cyklu a tým sa zabezpečí prechod na ďalšiu iteráciu. Tento príkaz môžete použiť na všetky typy cyklov, teda

 while, do..while aj for.
 for (výraz1; výraz2; výraz3) {
  if (podmienka) continue;
  príkaz1;  // tu sa pokračuje iba vtedy, ak podmienka nebola splnená
  príkaz2;
  atd...
 }

SWITCH

Poslednou kontrolnou štruktúrou, o ktorej si povieme, je switch. Céčkari si opäť prídu na svoje, pretože syntax je zasa podobná C. Switch slúži na nahradenie po sebe idúcich podienok IF s rovnakou premennou v podmienke:

 switch ($premenna) {
    case 0: 
        print "premenna sa rovna 0";
        break;
    case 1:
        print "premenna sa rovna 1";
        break;
    case 2:
        print "premenna sa rovna 2";
        break;
 }

Ako vidíte, program skočí vždy na tú vetvu, ktorá vyhovuje premennej uvedenej v zátvorke a hodnote uvedenej pri case. Musíte si dávať pozor a používať príkaz break, pretože kód je vykonávaný vždy od nájdenej vetvy až po koniec bloku switch alebo kým nenarazí na príkaz break. Preto sa tento príkaz používa v každej vetve. Ak by tak nebolo a $premenna sa rovnala 0, boli by vykonané všetky príkazy v bloku switch.

Tak potrebnú (aj keď zďaleka nie všetku) časť teórie máme za sebou a nabudúce sa budeme venovať už nejakým praktickým záležitostiam.

Developer,
Stiahnuté z Developer.sk