switch in PHP: Alternativen zu IF und ELSE

In diesem PHP Tutorial lernen wir switch in PHP kennen. Wie es funktioniert, was break und default sind und warum IF meistens besser sind.Tags: | | | | | | |
Noch nicht sicher genug im Webdesign? Lass dir in unseren Programmier-Kursen in Kirchdorf oder unserer Wichtel-Webdesign-Agentur in Pettenbach weiterhelfen!

Worum geht´s?

In diesem PHP Tutorial werden wir uns den Befehl switch in PHP ansehen. Wie du mehrere cases anlegst, sowie den default case, um „alle anderen“ nachzubilden.

1. Was ist ein switch in PHP?

Ein switch ist eine Variation der Verzweigungen mit Hilfe von IF und ELSE.

Wo man bei einem IF und ELSE nur ein entweder-oder (2 Möglichkeiten) abbilden kann, lassen sich mit Hilfe von switch in PHP auch mehrere „Ausgänge“ auf einmal abbilden.

1.1 Ein einfaches switch in PHP

Die Syntax dazu sieht dabei – in etwa – so aus:

switch ($zahl) {
    case 1: case 2: case 3:
        echo "1-3";
        break;
    case 4: case 5:
        echo "4-5";
        break;
    case 6:
        echo "6";
        break;
    default:
        echo "Alles außer 1-6";
}

1.2 Wie ein switch in PHP aufgebaut ist

Das „Zauberwort“ für switch in PHP heißt – wenig überraschend – „switch“, gefolgt von der Variable, die betrachtet werden soll in einer runden Klammer (). Der Rest befindet sich in geschwungenen Klammern {}.

Der Hauptblock besteht aus mehreren case Blöcken.

Ein jeder case-Block beginnt mit „case“, einem Wert (in unserem Fall einer Zahl) und einem Doppelpunkt. „case 1:“ bedeutet in unserem Fall „wenn die Variable $zahl gleich 1 ist“.

Es ist auch möglich, mehrere case-Blöcke zusammenzukombinieren. So steht z.B. „case 1: case 2: case 3:“ für „wenn die Variable $zahl einer der Werte 1-3 hat“.

Nach dem letzten Doppelpunkt eines case-Blocks kommt das, was in diesem Fall/in diesen Fällen passieren soll (in unserem Fall ein simples echo, also eine Ausgabe).

Am Ende findet sich jeweils ein „break;“ – dieses beendet einen case-Block.

Ganz unten in unserem switch findet sich noch das „default“. Der default-Block ist optional, und entspricht dem ELSE in einem IF-Befehl – also „wenn es keiner der obigen Werte ist“.

2. Nachteile von switch gegenüber IF und ELSE

Unser switch hat leider einen großen Nachteil: es ist nur sehr umständlich möglich, „von-bis“-case-Blöcke zu erstellen.

Wollen wir von 1-30 etwas machen, schaut das in einem switch in PHP so aus:

switch ($zahl) {
    case 1: case 2: case 3: case 4: case 5: 
    case 6: case 7: case 8: case 9: case 10: 
    case 11: case 12: case 13: case 14: case 15: 
    case 16: case 17: case 18: case 19: case 20:
    case 21: case 22: case 23: case 24: case 25: 
    case 26: case 27: case 28: case 29: case 30:
        echo "1-30";
        break;
    default:
        echo "Alles außer 1-30";
}

Das Gleiche mit IF und ELSE:

if ($zahl >= 1 && zahl <= 30) {
   echo "1-30";
}

Wie du siehst, ist die untere Version erheblich kürzer. Der Vergleich wäre noch schlimmer, wenn wir z.B. einen case-Block von 1-1000 mit switch in PHP umsetzen wollen.

Daraus lässt sich eine Grundregel ableiten:

Wenn du Bereiche mit von-bis abdecken willst, wird in 99% der Fälle IF und ELSE effizienter sein als ein switch in PHP

Wann aber verwenden wir nun doch ein switch in PHP?

Ein switch ist immer dann nützlich, wenn wir eine möglichst übersichtliche Auflistung verschiedener, einzelner Werte für eine Variable haben wollen, und was wir in diesen Fällen tun.

Dies kann z.B. der Fall sein, wenn es um die Steuerung eines Spiels geht, das auf einzelne Tasten reagiert.

Im Alltag wirst du in 95% aller Fälle IF und ELSE verwenden, und nur selten unser switch.

Weil es aber in fast allen Programmiersprachen vorkommt, wollten wir es dir natürlich nicht vorenthalten 🙂

Diskussion zum Tutorial

Du bist aus Oberösterreich? Dann nütze doch auch unsere flexiblen Programmier-Kurse in Kirchdorf - oder gib deine Website gerne in die guten Hände unserer erfahrenen Wichtel-Webdesign-Agentur.