switch
Die
switch
-Anweisung
ist
gleichbedeutend
einer
Reihe
von
if
-Anweisungen
mit
dem
gleichen
Parameter
.
Häufig
wollen
Sie
ein
und
dieselbe
Variable
(
bzw
.
den
selben
Ausdruck
)
mit
verschiedensten
Werten
vergleichen
und
in
Abhängigkeit
vom
Auswertungsergebnis
verschiedene
Programmteile
ausführen
.
Genau
das
ermöglicht
die
switch
-Anweisung
.
Die
folgenden
zwei
Beispiele
zeigen
zwei
verschiedene
Wege
,
das
Gleiche
zu
bewirken
;
eines
gebraucht
mehrere
if
-Anweisungen
,
das
andere
eine
switch
-Anweisung
:
Es
ist
wichtig
,
die
Ausführung
einer
switch
-Anweisung
zu
verstehen
,
um
Fehler
zu
vermeiden
.
Die
switch
-Anweisung
wird
Zeile
für
Zeile
(
also
Anweisung
für
Anweisung
)
abgearbeitet
.
Zu
Beginn
wird
nichts
ausgeführt
.
Erst
wenn
bei
einem
case
-Teil
eine
Entsprechung
zum
switch
-Ausdruck
vorliegt
,
werden
die
darin
enthaltenen
Anweisungen
von
PHP
ausgeführt
.
PHP
fährt
dann
mit
der
Abarbeitung
des
restlichen
Codes
innerhalb
des
switch
-Blocks
fort
oder
bis
zum
ersten
Auftreten
einer
break
-Anweisung
.
Ohne
break
am
Ende
eines
case-Teils
werden
also
noch
die
folgenden
case-Blöcke
ausgeführt
.
Zum
Beispiel
:
Wenn
hier
$i
gleich
0
ist
,
würde
PHP
alle
print-Anweisungen
ausführen
!
Ist
$i
gleich
1
,
werden
die
letzten
beiden
print-Befehle
ausgeführt
und
wenn
$i
=
2
ist
,
wird
nur
der
letzte
print-Befehl
ausgeführt
.
Deshalb
ist
es
wichtig
break
-Anweisungen
zu
setzen
(
abgesehen
von
bestimmten
Fällen
,
in
denen
Sie
diese
mit
Absicht
weglassen
)
.
Bei
einer
switch
-Anweisung
wird
die
Bedingung
also
nur
einmal
überprüft
und
das
Ergebnis
mit
jeder
case
-Anweisung
verglichen
.
Bei
einem
elseif
-Befehl
wird
die
Bedingung
neu
geprüft
.
Ist
ihre
Bedingung
komplizierter
als
ein
einfacher
Vergleich
und
/
oder
in
einer
umfangreichen
Schleife
eingebettet
,
kann
eine
switch
-Anweisung
schneller
als
mehrere
if
-Befehle
sein
.
Der
Anweisungsteil
von
case
kann
auch
leer
sein
.
Dann
wird
die
Kontrolle
einfach
an
den
nächsten
case-Teil
übergeben
.
Ein
Spezialfall
ist
default
.
Dieser
Fall
trifft
auf
alles
zu
,
was
nicht
von
den
voranstehenden
case-Ausdrücken
erfasst
wurde
und
sollte
als
letzte
case
Anweisung
angegeben
werden
.
Zum
Beispiel
:
Der
case
-Ausdruck
kann
eine
Prüfung
einfacher
Typen
sein
,
also
von
Integer
-
oder
Fließkomma-Zahlen
oder
von
Strings
/
Zeichenketten
.
Arrays
oder
Objekte
können
nicht
benutzt
werden
,
es
sei
denn
,
sie
wurden
in
einfache
Typen
umgewandelt
.
Die
alternative
Syntax
der
Kontrollstrukturen
gilt
auch
für
switch-Sequenzen
.
Mehr
Informationen
dazu
erhalten
Sie
unter
Alternative
Syntax
für
Kontroll-Strukturen
.