Načrtovanje in razvoj spletnih aplikacij

Pogojni stavek SWITCH

V mnogih primerih želimo primerjati vrednost iste spremenljivke in izvajati različne dele kode glede na vrednost te spremenljivke. V ta namen uporabljamo stavek switch. Stavek switch sintaktično zapišemo:

switch (n) {
    case izbira1:
        koda, ki se izvede, če je n=izbira1;
        break;
    case izbira2:
        koda, ki se izvede, če je n=izbira2;
        break;
    case izbira3:
        koda, ki se izvede, če je n=izbira3;
        break;
    ...
    default:
       koda, ki se izvede, če je n različen vsem izbiram;
}

Switch izvede vrstico za vrstico (stavek za stavkom). Na začetku se ne izvede nobena koda, ampak šele, ko se ujame izraz case z vrednostjo, ki je enaka vrednosti switch. PHP nadaljuje izvajanje stavkov do konca bloka switch ali do prvega stavka break.

<?php
   $i = 2;
   switch ($i) {
      case 0:
         echo "i je enak 0";
         break;
      case 1:
         echo "i je enak 1";
         break;
      case 2:
         echo "i je enak 2";
         break;
   }
?>
i je enak 2

Stavek BREAK na koncu stavkov izraza CASE

Če ne podamo stavka break na koncu stavkov izraza case, bo PHP nadaljeval izvajanje stavkov naslednjega case-a.

<?php
   switch ($i) {
      case 0:
         echo "i je enak 0";
      case 1:
         echo "i je enak 1";
      case 2:
         echo "i je enak 2";
   }
?>

V tem primeru bi PHP, če je $i = 0, izvedel vse stavke echo in samo v primeru, da je $i = 2, bi dobili pričakovan rezultat, ki bi izpisal i je enak 2. Pomembno je, da ne pozabimo stavkov break!


Izraz DEFAULT CASE

Poseben primer izraza case je izraz default case. Ta izraz prebere vse vrednosti, ki ne veljajo za ostale case izraze in ga moramo praviloma podati kot zadnjega.

<?php
   $i = 5;
   switch ($i) {
      case 0:
         echo "i je enak 0";
         break;
      case 1:
         echo "i je enak 1";
         break;
      case 2:
         echo "i je enak 2";
         break;
      default:
         echo "i ni enak 0, 1 ali 2";
   }
?>
i ni enak 0, 1 ali 2