switch
Konstrukt
switch
je
podobná
sérii
konstruktů
IF
,
testujících
tentýž
výraz
.
V
mnoha
případech
můžete
chtít
porovnávat
stejnou
proměnnou
(
nebo
výraz
)
s
mnoha
různými
hodnotami
a
provádět
různé
kusy
kódu
v
závislosti
na
tom
,
které
hodnotě
se
rovná
.
To
je
přesně
to
,
k
čemu
je
switch
.
Následující
dva
příklady
představují
dva
odlišné
způsoby
,
jak
napsat
totéž
;
jeden
používá
sérii
podmínek
if
,
zatímco
druhý
je
založen
na
konstruktu
switch
:
Je
důležité
pochopit
,
jak
se
konstrukt
switch
provádí
,
aby
se
zabránilo
chybám
.
Konstrukt
switch
provádí
řádek
po
řádku
(
resp
.
konstrukt
po
konstruktu
)
.
Na
začátku
není
proveden
žádný
kód
.
Pouze
tehdy
,
když
se
najde
case
s
hodnotou
odpovídající
hodnotě
výrazu
u
switch
,
začne
PHP
provádět
následující
konstrukty
.
Vykonávání
kódu
pokračuje
,
dokud
se
nedosáhne
konce
bloku
switch
nebo
prvního
příkazu
break
.
Pokud
nenapíšete
na
konec
bloku
po
case
příkaz
break
,
bude
PHP
pokračovat
v
provádění
dalších
konstruktů
(
po
dalším
case
)
.
Například
:
Zde
,
pokud
se
$i
rovná
0
,
se
budou
provádět
všechny
příkazy
"
print
"
!
Pokud
se
$i
rovná
1
,
PHP
provede
poslední
dva
příkazy
,
a
pouze
rovná-li
se
$i
číslu
2
,
obdržíte
"
očekávané
"
chování
a
zobrazí
se
pouze
"i
se
rovná
2
"
.
Takže
je
důležité
nezapomenout
na
příkaz
break
(
kromě
případu
,
kdy
ho
chcete
vynechat
záměrně
k
dosažení
určitého
cíle
)
.
V
konstruktu
switch
se
podmínka
testuje
pouze
jednou
a
výsledek
se
porovnává
s
každou
hodnotou
v
case
.
V
případě
elseif
se
podmínka
pokaždé
testuje
znovu
.
Pokud
je
vaše
podmínka
komplikovanější
než
jednoduché
porovnání
a
/
nebo
je
uvnitř
cyklu
,
switch
může
být
rychlejší
.
Seznam
konstruktů
za
case
může
být
také
prázdný
,
což
jednoduše
předá
řízení
následujícímu
case
.
Speciální
case
je
"
default
"
.
Vyhovuje
všem
ostatním
hodnotám
,
které
nejsou
pokryty
některým
z
ostatních
case
a
má
být
vždy
jako
poslední
.
Například
:
Výraz
v
case
může
být
libovolný
výraz
,
jehož
hodnota
je
jednoduchého
typu
,
tj
.
celé
nebo
reálné
číslo
nebo
řetězec
.
Pole
ani
objekty
nelze
použít
,
ledaže
by
odkazovaly
na
jednoduchý
typ
.
Alternativní
syntaxe
pro
konstrukty
switch
je
podporována
.
Pro
víc
informací
viz
Alternativní
syntaxe
řídicích
struktur
.