Načrtovanje in razvoj spletnih aplikacij

Pogojni stavek IF...ELSEIF...ELSE

Stavek if...elseif...else uporabimo takrat, ko želimo preveriti več različnih pogojev. Pogoji se preverjajo po vrsti od zgoraj navzdol. Izvede se samo prvi blok kode, katerega pogoj je resničen.

Če prvi pogoj v stavku if ni resničen, PHP preveri naslednji pogoj v stavku elseif. Če ni resničen noben pogoj, se izvede blok else, če je zapisan.

Pomni: Pri stavku if...elseif...else se izvede samo prva veja, katere pogoj je resničen.

Osnovna pravila

Sintaksa stavka if...elseif...else je:

if (pogoj1) {
   koda, ki se izvede, če je pogoj1 resničen;
} elseif (pogoj2) {
   koda, ki se izvede, če je pogoj2 resničen;
} else {
   koda, ki se izvede, če ni resničen noben pogoj;
}
  • pogoji se preverjajo po vrsti od zgoraj navzdol,
  • izvede se samo prvi blok kode, katerega pogoj je resničen,
  • blok else je neobvezen,
  • v enem stavku lahko uporabimo več vej elseif,
  • zaradi preglednosti je priporočljivo uporabljati zapis elseif namesto else if.

Pozor: Vrstni red pogojev je pomemben. Če je širši pogoj zapisan pred ožjim, se lahko izvede prej in prepreči preverjanje naslednjih vej.

Primer, ko je $a večji od $b

<?php
$a = 3;
$b = 1;

if ($a > $b) {
    echo "a je večji kot b";
} elseif ($a === $b) {
    echo "a je enak b";
} else {
    echo "a je manjši kot b";
}
?>
a je večji kot b

Ker je pogoj $a > $b resničen, se izvede prvi blok kode. Naslednji pogoji se ne preverjajo več.

Pomni: Ko PHP najde prvo resnično vejo, preostalih pogojev v isti strukturi ne preverja več.

Primer, ko je $a enak $b

<?php
$a = 3;
$b = 3;

if ($a > $b) {
    echo "a je večji kot b";
} elseif ($a === $b) {
    echo "a je enak b";
} else {
    echo "a je manjši kot b";
}
?>
a je enak b

V tem primeru prvi pogoj ni resničen, zato PHP preveri naslednjo vejo elseif. Ker je pogoj $a === $b resničen, se izvede ta veja.

Primer, ko je $a manjši od $b

<?php
$a = 3;
$b = 5;

if ($a > $b) {
    echo "a je večji kot b";
} elseif ($a === $b) {
    echo "a je enak b";
} else {
    echo "a je manjši kot b";
}
?>
a je manjši kot b

Ker ni resničen ne prvi ne drugi pogoj, se izvede veja else.

Primerjava: if, if...else in if...elseif...else

Zapis Kdaj ga uporabimo Značilnost
if ko preverjamo en sam pogoj izvede se samo ob resničnem pogoju
if...else ko izbiramo med dvema možnostma ena veja za resničen, druga za neresničen pogoj
if...elseif...else ko preverjamo več različnih možnosti izvede se samo prva ustrezna veja

Pomni: Zapis if...elseif...else je primeren takrat, ko imamo več možnih poti izvajanja programa in želimo izbrati natanko eno.

Priporočila

  • Pogoje zapisujemo od bolj posebnih proti bolj splošnim.
  • Za več medsebojno izključujočih možnosti uporabljamo enotno strukturo if...elseif...else.
  • Pri primerjanju vrednosti je pogosto smiselno uporabiti strogo primerjavo ===.
  • Vejo else uporabimo takrat, ko želimo zajeti tudi vse preostale primere.
  • Kodo znotraj vej pišemo pregledno in z enotnim zamikanjem.

Pozor: Če pogoji niso zapisani jasno ali logično urejeno, postane potek odločanja težje razumljiv.

Pogoste napake

  • Pogoji so zapisani v neustreznem vrstnem redu.
  • Za primerjanje enakosti se uporabi neustrezen operator.
  • Namesto enotne strukture if...elseif...else se uporabi več ločenih stavkov if, čeprav so veje medsebojno izključujoče.
  • Veja else manjka, čeprav bi bilo smiselno obravnavati tudi preostale možnosti.
  • V kodi se napačno pričakuje, da se bo izvedlo več vej hkrati.

Pozor: Najpogostejši vzroki za napake so napačen vrstni red pogojev, nejasna logika odločanja in neustrezna izbira operatorjev.

Kdaj uporabimo if...elseif...else

Ta zapis uporabimo takrat, ko imamo več možnih poti izvajanja programa in želimo med njimi izbrati natanko eno. Tako je koda pogosto preglednejša kot pri več ločenih stavkih if.

Sklep

Stavek if...elseif...else je osnovna struktura odločanja v PHP, s katero pregledno obravnavamo več različnih pogojev. Pri njegovi uporabi je pomembno, da pogoje uredimo smiselno, uporabljamo ustrezne operatorje in jasno ločimo posamezne možnosti izvajanja programa.