Algoritmy s PHP

Ján Guniš, PF UPJŠ, Košice

 

Vetvenie programu, príkaz IF, IF ELSE, IF ELSEIF ELSE

Väčšina algoritmov musí reagovať na vstupy a podľa toho vetviť výpočet. Jednou z možností je použitie príkazu IF. Príkaz IF má niekoľko tvarov.

    

Príklad príkazu IF Vysvetlenie
if (podmienka) prikaz;
 
Ak je podmienka splnená, vykoná sa príkaz
if ($b != 0) echo "Podiel $a/$b=" . $a/$b;
                                          
Ak je premenná $b rôzna od 0, vypíše sa hodnota výrazu $a/$b
if ($b != 0)
{
 echo "Menovatel je rozny od 0";
 echo "Podiel $a/$b=" . $a/$b;
}
 
Ak chceme v prípade platnosti podmienky vykonať viac príkazov, ohraničíme ich zátvorkami {}. Ak teda premenná $b je rôzna od nuly, vykonajú sa oba príkazy.
if ($b != 0):
 echo "Menovatel je rozny od 0<br>";
 echo "Podiel $a/$b=" . $a/$b;
endif;
 
V prípade písania zložitejších štruktúr je predchádzajúci spôsob dosť neprehľadný a môžeme sa v programe "stratiť". Prehľadnejšie je teda použitie tejto syntaxe. Nezabudnite na ":" za podmienkou!

 

Často sa vyskytne situácia, kde na základe platnosti podmienky musíme vykonať dve rôzne činnosti. Vtedy použijeme IF ELSE.

Príklad príkazu IF ELSE Vysvetlenie
if (podmienka)
 prikaz1;
else
 prikaz2;
 
Ak je podmienka splnená, vykoná sa prikaz1. Ak splnená nie je, vykoná sa prikaz2.
if  ($b != 0)
 echo "Podiel $a/$b=" . $a/$b;
else
 echo "Podiel $a/$b nie je definovaný";
                                          
Ak je premenná $b rôzna od 0, vypíše sa hodnota výrazu $a/$b. V opačnom prípade sa vypíše text, ktorý hovorí, že podiel nie je definovaný.
 
if  ($b != 0)
{
 echo "Menovatel je rozny od 0";
 echo "Podiel $a/$b=" . $a/$b;
}
else
{
 echo "Menovatel je rovny 0";
 echo "Podiel $a/$b nie je definovaný";
}
                                         
Ak chceme v prípade platnosti (neplatnosti) podmienky vykonať viac príkazov, ohraničíme ich zátvorkami {}.
if ($b != 0):
 echo "Menovatel je rozny od 0";
 echo "Podiel $a/$b=" . $a/$b;
else:
 echo "Menovatel je rozny od 0";
 echo "Podiel $a/$b nie je definovaný";
endif;
 
V prípade písania zložitejších štruktúr je predchádzajúci spôsob dosť neprehľadný a môžeme sa v programe "stratiť". Prehľadnejšie je teda použitie tejto syntaxe. Nezabudnite na ":" za podmienkou a kľúčovým slovom else.

 

V prípade viacnásobného vetvenia, môžeme použiť príkaz IF ELSEIF ELSE. Mohli by sme samozrejme použiť ďalší príkaz IF vo vetve ELSE predchádzajúceho príkazu IF, ale pri zložitejších vetveniach by sa program mohol stať neprehľadným.

Príklad príkazu IF ELSEIF ELSE Vysvetlenie
if (podmienka1)
 prikaz1;
elseif (podmienka2)
 prikaz2;
elseif (podmienka3)
 prikaz3;
...
else prikazn;
 
Ak je podmienka1 splnená, vykoná sa prikaz1. Ak podmienka1 nie je splnená a zároveň je splnená podmienka2, vykoná sa prikaz2 atď. Ak nie je splnená ani jedna z podmienok, vykoná sa príkazn vo vetve else. Vetva else však nie je povinná. Ak ju neuvedieme, a nebude splnená žiadna z podmienok, nevykoná sa žiaden príkaz z tela IF ELSEIF ELSE. V prípade, že podmienok je splnených viac, vykoná sa len príkaz za prvou platnou podmienkou.
if ($a < $b)
 echo "$a<$b";
elseif ($a > $b)
 echo "$a>$b";
else
 echo "$a=$b";
 
Porovnanie dvoch čísel. Môžu nastať tri situácie. Testujeme podmienky $a<$b, $a>$b. Ak nie je splnená ani jedna z nich, ostáva posledný prípad (vetva else), $a=$b.
if ($a < $b):
 echo "Hodnoty su rozne";
 echo "$a<$b";
elseif ($a > $b):
 echo "Hodnoty su rozne";
 echo "$a>$b";
else:
 echo "Hodnoty su rovne";
 echo "$a=$b";
endif;
 
Ak chceme v niektorej vetve vykonať viac príkazov, použijeme ":" za podmienkou alebo za slovíčkom else. Nezabudnite na endif na konci. Ak v jednej vetve použijete ":" za podmienkou, musíte ju použiť za každou podmienkou, inak to PHP interpretuje ako syntaktickú chybu.