Switch

Hast du eine Frage oder einen Fehler gefunden? Klick hier

Im Kapitel zu if, else if, else habe ich schon angesprochen, dass man statt einer Reihe von “else if”-Abfragen besser ein Switch-Konstrukt nutzt.

<?php
	switch($zahl) {
		case 0:
			echo 'Durch 0 darf man nicht teilen';
			break;
		case 1:
			echo 'Die Zahl 1 ist sehr klein';
			break;
		case 99999:
			echo 'Das ist eine sehr große Zahl';
			echo 'kurz vor hunderttausend';
			break;
	}
?>

Switch ist dafür gedacht, eine Variable auf mehrere Werte zu prüfen und für den jeweiligen Wert, einen unterschiedlichen Code auszuführen. Das selbe könnte man auch mit mehreren “else if”-Abfragen bewerkstelligen, doch switch ist dafür aufgrund seiner Struktur übersichtlicher. Der Code ist schnell erklärt:

  • switch erwartet eine Variable und prüft dann den Wert
  • für jeden Wert kann ein “case” angelegt werden
  • das “break;” nach jeder Anweisung besagt, dass die Switch-Abfrage beendet wird, wenn ein Wert gefunden wurde
  • nach einem “case” können ein- und mehrzeilige Anweisungen folgen

“default” ersetzt “else” in der Switch Anweisung

Auch für die Switch Anweisung gibt es eine “else” Bedingung doch hier heißt sie “default”:

<?php
	switch($zahl) {
		case 0:
			echo 'Zahl 0';
			break;
		case 1:
			echo 'Zahl 1';
			break;
		default:
			echo 'Eine Zahl ungleich 0 oder 1';
	}
?>

Default steht am Ende nach allen “case”-Anweisungen und muss auch nicht mit einem break geschlossen werden, da die Switch-Anweisung an dieser Stelle sowieso zuende ist.

Natürlich kann man nicht nur Zahlen sondern auch Strings prüfen:

<?php
	switch($name) {
		case 'Lisa':
			echo 'Lisa ist ein schöner Name';
			break;
		case 'Laura':
			echo 'Hey Laura, ebenfalls ein schöner Name';
			break;
		default:
			echo 'Auch dein Name ist schön, '.$name;
	}
?>

Warum die Switch Anweisung verwenden?

Es gibt eigentlich nur 2 Gründe:

  1. bei vielen “case”-Anweisungen kann switch schneller sein als mehrere “else if”-Anweisungen
  2. in manchen Fällen ist es übersichtlicher, gerade wenn man viele “case”-Anweisungen hat, bzw eine Variable auf viele unterschiedliche Fälle prüfen möchte (z.b. welche Taste wurde gedrückt: “oben”, “unten”, “links”, “rechts”, “space”, “enter”, etc.)

Kommentare

Kommentar schreiben

Kommentar

Feedback Formular