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;
}
?>
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";
}
?>