Vereinfachte Abfrage in PHP mit Switch und Case

In Verbindung mit Vergleichsoperatoren kann man in PHP-Programmen if-, else-Abfragen verwenden, um Variablen auf bestimmte Werte abzufragen und die Programmausführung davon abhängig zu machen. In manchen Fällen kann es vorteilhafter sein, die Switch/Case Abfrage zu verwenden, da sie übersichtlicher sein kann, insbesondere bei der Abfrage nach mehreren Werten.

Mit Switch/Case ist eine vereinfachte Abfrage möglich, bei der eine Variable jedoch lediglich auf Gleichheit (entspricht dem Vergleichsoperator ==) geprüft wird. Dabei kann eine Variable mehrfach geprüft werden und je nach Zutreffen kann ein anderer Programmcode zur Anwendung kommen. Nachfolgend ist ein Beispielcode mit einer if-, else-Abfrage sowie einer Switch/Case Abfrage, die denselben Effekt hat.

<?php

$alter = 18;

// Normale if-, else-Abfrge
if ($alter == 18)
{
  $ausgabe = 'Du bist 18 Jahre alt';
}
else 
{
  $ausgabe = 'Alter kann nicht ermittelt werden';
}

echo $ausgabe;

// Switch/Case Abfrage
// Übergabe der Variable zur Abfrage 
switch ($alter) {

// Abfrage, ob Variable 18 ist
  case 18:
    // Anweisung falls zutrifft
    $ausgabe = 'Du bist 18 Jahre alt';
    break;

// Standard, falls zuvor nichts zutrifft
  default:
    $ausgabe = 'Alter kann nicht ermittelt werden';
}

echo $ausgabe;

?>

Mit switch ($alter) wird die Variable übergeben, die mit einem Wert verglichen werden soll. Innerhalb der geschweiften Klammern wird mit case 18; geprüft, ob der Wert der Variable 18 ist. Danach folgt ein Programmteil, der beliebig sein kann und für den Fall ausgeführt werden soll, dass die Abfrage zutrifft. In diesem Beispiel soll der Variable $ausgabe die Zeichenkette Du bist 18 Jahre alt zugewiesen werden. Die Anweisung break; bricht die Switch/Case Abfrage ab, damit nicht unnötig weitere Abfragen durchgeführt werden, die theoretisch folgen könnten. Mit default: wird der Programmteil angegeben, der ausgeführt werden soll, falls bei den vorangegangenen Überprüfungen nichts zutraf.

Mehrfache Überprüfung mit Switch und Case

Die Stärken werden bei der Switch/Case Abfrage dann deutlich, wenn man eine Variable auf mehrere Werte überprüfen möchte. Hierfür erweitert man den Code mit einer nochmaligen Wiederholung des Bereichs zwischen case und break. Beim folgenden Beispielcode wird die Variable $alter auf die Zahlen 1, 5, 10 und 18 überprüft.

<?php

$alter = 18;

// Übergabe der Variable zur Abfrage
switch ($alter) {

// Abfrage, ob Variable 1 ist
  case 1:
    // Anweisung falls zutrifft
    $ausgabe = 'Du bist 1 Jahr alt';
    break;

// Abfrage, ob Variable 5 ist
  case 5:
    // Anweisung falls zutrifft
    $ausgabe = 'Du bist 5 Jahre alt';
    break;

// Abfrage, ob Variable 10 ist
  case 10:
    // Anweisung falls zutrifft
    $ausgabe = 'Du bist 10 Jahre alt';
    break;

// Abfrage, ob Variable 18 ist
  case 18:
    // Anweisung falls zutrifft
    $ausgabe = 'Du bist 18 Jahre alt';
    break;

// Standard, falls zuvor nichts zutrifft
  default:
    $ausgabe = 'Alter kann nicht ermittelt werden';
}

echo $ausgabe;

?>

Überprüfung auf Zeichenketten oder Fließkommazahlen

Der Ausdruck bei case kann ein beliebiger Ausdruck einfachen Typs (Ganzzahlen, Fließkommazahlen, Zeichenketten) sein. Eine Überprüfung auf Arrays oder Objekte ist nicht möglich. Eine Zeichenkette wird dabei innerhalb von einfachen oder doppelten Hochkommas geschrieben. Bei einer Fließkommazahl ist zu beachten, dass man als Dezimaltrennzeichen einen Punkt verwendet. Es ist auch möglich, den Ausdruck innerhalb von runden Klammern einzufügen.

<?php

$name = 'Max Mustermann';

// Übergabe der Variable zur Abfrage
switch ($name) {

  case 'Max Mustermann':
    $ausgabe = 'Dein Name ist Max Mustermann';
    break;

  case ('Sonja Mustermann'):
    $ausgabe = 'Dein Name ist Sonja Mustermann';
    break;

  case "Hans Mustermann":
    $ausgabe = 'Dein Name ist Hans Mustermann';
    break;

  case ("Claudia Mustermann"):
    $ausgabe = 'Dein Name ist Claudia Mustermann';
    break;

// Standard, falls zuvor nichts zutrifft
  default:
    $ausgabe = 'Name kann nicht ermittelt werden';
}

echo $ausgabe;

?>

Mehrfache Verwendung von case

Soll ein bestimmter Programmteil beim Vorkommen verschiedener Werte ausgeführt werden, kann man einige Zeilen Code sparen und die Abfrage mit case mehrfach hintereinander durchführen.

<?php

$name = 'Max Mustermann';

// Übergabe der Variable zur Abfrage
switch ($name) {

  case 'M':
  case 'Max':
  case 'Max Mustermann':
    $ausgabe = 'Dein Name beginnt mit M';
    break;

  case 'C':
  case 'Claudia':
  case 'Claudia Mustermann':
    $ausgabe = 'Dein Name beginnt mit C';
    break;

// Standard, falls zuvor nichts zutrifft
  default:
    $ausgabe = 'Name kann nicht ermittelt werden';
}

echo $ausgabe;

?>

Den Bereich mit dem Standardcode (default) kann man theoretisch innerhalb der gescheiften Klammern auch an einer anderen Stelle setzen. In der Praxis hat es sich jedoch eingebürgert, diesen zuletzt anzugeben.