Anzeige
Tutorialbeschreibung

PHP - Teil 10 - switch()-Fallunterscheidungen

PHP - Teil 10 - switch()-Fallunterscheidungen

Zweifellos die einfachste Form der Fallunterscheidung steht mit if zur Verfügung. Deren allgemeine Syntax sieht folgendermaßen aus:
<?php
if(Bedingung){
Anweisung
}
?>

Hinter dem Schlüsselwort if folgt in Klammern gesetzt die Bedingung. Das, was innerhalb der geschweiften Klammern steht, wird dann ausgeführt, wenn diese Bedingung erfüllt ist. Ein Beispiel:
<?php
$zahl=1;
if($zahl==1){
echo "Eine Eins!!!";
}
?>

In diesem Beispiel wird überprüft, ob der Wert der Variablen $zahl gleich 1 ist. Ist das der Fall, wird die Zeichenkette Eine Eins!!! ausgegeben.

Bilder



 
Achtet in jedem Fall darauf, dass ihr innerhalb der Klammern, also bei der Definition der Bedingung – und darauf wurde bereits in vorherigen Tutorials hingewiesen –, das doppelte Gleichheitszeichen verwenden müsst. Wenn ihr nur ein Gleichheitszeichen verwendet, funktioniert die Syntax nicht, da es sich dann um den Zuweisungsoperator handeln würde. Und durch den würde der Variablen $zahl der Wert 1 zugewiesen werden.

Es gibt noch eine alternative Syntax für Kontrollstrukturen in PHP. Diese kann dann übrigens nicht nur auf if, sondern auch auf die anderen in diesem Tutorials vorgestellten Varianten angewendet werden. (Außerdem lässt sich die Syntax auch bei for und foreach verwenden; dazu dann aber in einem anderen Tutorial mehr). Herzstück der alternativen Syntax ist der Austausch der öffnenden Klammer durch einen Doppelpunkt und das Ersetzen der schließenden Klammer durch endif. Die folgende Syntax zeigt, wie sich das bekannte if-Beispiel auf Basis der alternativen Syntax umsetzen lässt.
<?php 
$zahl=1;
if ($zahl == 1):?>
Eine Eins!!!
<?php endif; ?>

Welche der beiden Varianten ihr letztendlich verwenden wollt, hängt dabei tatsächlich von euch bzw. euren persönlichen Vorlieben ab.

Enthält die Variable $zahl nicht den Wert 1, bleibt die Ausgabe leer. Das ist so natürlich nicht immer gewünscht. Daher kann man einen else-Zweig einführen. Die darin enthaltene Anweisung wird immer dann ausgeführt, wenn die if-Bedingung nicht erfüllt ist. Die allgemeine Syntax einer solchen if-else-Konstruktion sieht folgendermaßen aus:
<?php
if(Bedingung){
 Anweisung
 } else{
 Anweisung
}
?>

Umgemünzt auf das vorherige Beispiel ergäbe sich nun folgendes Bild:
<?php
$zahl=2;
if($zahl==1){
 echo "Eine Eins!!!";
} else{
 echo "Das ist keine Eins!!!";
}
?>

 
Ist der Wert der Variablen $zahl ungleich 1, wird die im else-Zweig definierte Anweisung ausgeführt. Im aktuellen Beispiel würde das – wenn der Wert tatsächlich ungleich 1 ist - zur Anzeige der Zeichenkette Das ist keine Eins!!! führen.

Bilder



 
Nun reichen diese einfachen if-else-Konstruktionen nicht immer aus, da diese auf zwei Ebenen beschränkt sind. Um mehr als zwei Bedingungen abzudecken, gibt es verschiedene Möglichkeiten. Zunächst einmal wäre da die if-elseif-Konstruktion. Deren allgemeine Syntax sieht folgendermaßen aus:
<?php
if(Bedingung){
Anweisung
} elseif{
Anweisung
} elseif{
Anweisung
}
?>

Noch ein Wort zur Schreibweise. Prinzipiell könnt ihr entweder elseif oder else if verwenden. (Also getrennt oder zusammengeschrieben). Aber Achtung: elseif und else if verhalten sich nur dann identisch, wenn geschweifte Klammern – wie in der allgemeinen Syntax gezeigt wurde – verwendet werden. Wird hingegen ein Doppelpunkt – also die bereits vorgestellte alternative Syntax – verwendet, muss elseif in einem Wort geschrieben werden, da es anderenfalls einen Parse-Error gibt.

Es können beliebig viele elseif-Strukturen definiert werden. Die erste, deren Bedingung dann tatsächlich zutrifft, wird ausgeführt.
Das folgende Beispiel zeigt, wie sich eine if-elseif-Konstruktion typischerweise verwenden lässt:
<?php
$zahl=2;
if ($zahl==1) {
 echo "Eine Eins!!!";
} elseif ($zahl==2) {
 echo "Eine Zwei!!!";
} elseif ($zahl==3) {
 echo "Eine Drei!!!";
}else {
 echo "Keine Zahl!!!";
}
?>

In diesem Beispiel wird zunächst mittels if überprüft, ob der Wert der Variablen gleich 1 ist. Anschließend gibt es zwei elseif-Anweisungen. Diese kontrollieren den Variablenwert auf einen der beiden Werte 2 oder 3.

 
Ist der Variablenwert weder 1 oder 2 noch 3, greift der abschließende else-Zweig.

Bilder


Die if-elseif-Konstruktionen können sehr schnell – je nach Anzahl der Bedingungen – unübersichtlich werden. Hier hilft dann switch() weiter. Mittels switch() lässt sich eine Auswahl treffen. Dabei bietet sich der Einsatz von switch() immer dann an, wenn viele Überprüfungen einer Variable durchgeführt werden sollen. Das ist deutlich übersichtlicher, als wenn man eine Kette von if-elseif-Anweisungen verwenden würde. Auch hier zunächst wieder die allgemeine Syntax:
<?php
switch (Bedingung) {
case 0:
    Anweisung 1
case 1:
    Anweisung 2
case 2:
    Anweisung 3
}
?>

 
Innerhalb der runden Klammern von switch() gibt man den zu überprüfenden Ausdruck an, bei dem es sich üblicherweise um eine Variable handelt. Über die einzelnen case-Angaben werden die verschiedenen Bedingungen definiert. Dabei werden die case-Blöcke innerhalb der geschweiften Klammern gesetzt.
Auch switch() lässt sich wieder am besten anhand eines Beispiels zeigen.
<?php
$zahl = 4;
switch ($zahl) {
 case 0:
 echo "Eine Null!!!";
 case 1:
 echo "Eine Eins!!!";
 case 2:
 echo "Eine Zwei!!!";
case 3:
 echo "Eine Drei!!!";
case 4:
 echo "Eine Vier!!!";
}
?>

Springt PHP zu einem case-Block, wird der PHP-Code an dieser Stelle ausgeführt. Stößt PHP dabei auf weitere case-Zeilen, werden diese ignoriert. Somit stoppt der PHP-Interpreter also auch nicht automatisch beim nächsten case. Dieses Verhalten lässt sich ändern. Dazu fügt man break-Anweisungen ein.
<?php
$zahl=2;
switch ($zahl) {
 case 0:
 echo "Eine Null!!!";
 break;
 case 1:
 echo "Eine Eins!!!";
 break;
 case 2:
 echo "Eine Zwei";
 break;
 case 3:
 echo "Eine Drei!!!";
 break;
 case 4:
 echo "Eine Vier";
 break;
}
?>

 
Für den Fall, dass eine switch()-Abfrage kein passendes case findet, springt der Interpreter automatisch zu einem default:-Teil. Dieser default:-Teil muss dann allerdings auch tatsächlich definiert worden sein.
<?php
$zahl=12;
switch ($zahl) {
 case 0:
 echo "Eine Null!!!";
 break;
 case 1:
 echo "Eine Eins!!!";
 break;
 case 2:
 echo "Eine Zwei";
 break;
 case 3:
 echo "Eine Drei!!!";
 break;
 case 4:
 echo "Eine Vier";
 break;
default:
 echo "Nicht angegeben.";
}
?>

 
Sollte der PHP-Interpreter auf nichts stoßen, das explizit mit case abgedeckt ist, wird automatisch das ausgeführt, was bei default: notiert ist.

Bilder



Fazit:

Mit den in diesem Tutorial vorgestellten Syntaxformen könnt ihr innerhalb eurer Skripte auf verschiedene Bedingungen reagieren.

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 14.05.2017 - 18:04

Sehr ausführlich erklärtes Tutorial! Vielen Dank!

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 07.10.2016 - 13:14

Vielen Dank, tolles Video.

Portrait von dmtw2107
  • 16.11.2013 - 09:35

toll erklärt danke für das tutorial

Portrait von pascal.k
  • 27.04.2011 - 12:55

Danke erstmal für das Tutorial.

Leider muss ich es etwas kritissieren. Man kann zwar selbst als Leihe alles gut verstehen, jedoch könnte das Tutorial auch in der Hälfte der Zeit durchgezogen werden und wofür man switch nun eigentlich braucht wird leider auch nicht gesagt.
Eventuell ist es besser, wenn man nur schnell die Switch-Anwendung erklärt. So schwer ist sie ja nicht zu verstehen und dann noch an einem praktischem Beispiel erklärt, wo diese sich gut anwenden lässt.

LG Pascal

x
×
×