0Pricing
PHP Academy · Lektion

Switch- und Match-Anweisungen

Verwenden Sie switch und PHP 8 match für Logik mit mehreren Verzweigungen.

Switch- und Match-Anweisungen ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

switch- gegenüber if-Ketten

Wenn Sie viele Verzweigungen basierend auf dem Wert einer einzelnen Variablen haben, ist switch übersichtlicher als eine lange if/elseif-Kette.

PHP 8 führte match als moderne, strikte Alternative ein.

Grundlagen der switch-Anweisung

switch wertet seinen Ausdruck einmal aus und führt den Block des passenden case aus:

<?php
$day = 'Monday';

switch ($day) {
    case 'Monday':
        echo 'Start of work week';
        break;
    case 'Friday':
        echo 'Almost weekend';
        break;
    default:
        echo 'Midweek';
}

Fall-through-Verhalten

Ohne break fällt die Ausführung in den nächsten case durch – ein gezielter Trick zum Gruppieren:

<?php
$status = 2;

switch ($status) {
    case 1:
    case 2:
    case 3:
        echo 'In progress';  // runs for 1, 2, or 3
        break;
    case 4:
        echo 'Done';
        break;
}

switch verwendet einen lockeren Vergleich

switch verwendet intern == (einen lockeren Vergleich) – das kann zu überraschenden Übereinstimmungen führen:

<?php
$val = 0;

switch ($val) {
    case 'foo':   // 0 == 'foo' in PHP 7!
        echo 'match foo';
        break;
    case 0:
        echo 'match zero';  // PHP 8 fixes this
        break;
}
// PHP 8: match zero (fixed)
// PHP 7: match foo (bug!)

PHP-8-match-Ausdruck

match ähnelt switch, verwendet aber einen strikten Vergleich, gibt einen Wert zurück und benötigt kein break:

<?php
$status = 'active';

$label = match($status) {
    'active'   => 'Currently active',
    'inactive' => 'Not active',
    'pending'  => 'Awaiting activation',
    default    => 'Unknown status',
};

echo $label; // Currently active

match ohne passende Bedingung

Wenn in match kein Arm übereinstimmt und kein default vorhanden ist, wird UnhandledMatchError ausgelöst:

<?php
$code = 99;

try {
    $result = match($code) {
        200 => 'OK',
        404 => 'Not Found',
        500 => 'Server Error',
        // no default!
    };
} catch (\UnhandledMatchError $e) {
    echo 'Unhandled match value: ' . $code;
}

match mit mehreren Bedingungen

Ein einzelner match-Arm kann mehrere durch Kommas getrennte Werte auflisten:

<?php
$lang = 'tr';

$region = match($lang) {
    'en', 'en-US', 'en-GB' => 'English',
    'tr', 'az'             => 'Turkic',
    'fr', 'be', 'ca'       => 'French-speaking',
    default                => 'Other',
};

echo $region; // Turkic

match mit komplexen Ausdrücken

match-Arme können auf der rechten Seite beliebige Ausdrücke verwenden:

<?php
$score = 85;

$grade = match(true) {
    $score >= 90 => 'A',
    $score >= 80 => 'B',  // matches
    $score >= 70 => 'C',
    default      => 'F',
};

echo $grade; // B

Rückgabe aus match

Da match ein Ausdruck ist, kann es überall dort verwendet werden, wo ein Wert erwartet wird:

<?php
function getHttpMessage(int $code): string {
    return match($code) {
        200 => 'OK',
        201 => 'Created',
        400 => 'Bad Request',
        401 => 'Unauthorized',
        404 => 'Not Found',
        default => 'Unknown',
    };
}

echo getHttpMessage(404); // Not Found

switch im Rückgabekontext

switch kann innerhalb einer Funktion verwendet werden, um unterschiedliche Werte zurückzugeben, aber match ist übersichtlicher:

<?php
function describe(int $n): string {
    switch (true) {
        case $n < 0:  return 'negative';
        case $n === 0: return 'zero';
        default:       return 'positive';
    }
}

echo describe(-5);  // negative
echo describe(0);   // zero
echo describe(7);   // positive

Wann Sie switch und match verwenden sollten

Richtlinien für die Auswahl:

  • Verwenden Sie match, wenn Sie einen strikten Vergleich und einen Rückgabewert benötigen (PHP 8+)
  • Verwenden Sie switch für Gruppierungen mit Fall-through oder wenn Sie PHP 7 unterstützen
  • Beide sind für Verzweigungen mit mehreren Werten übersichtlicher als lange if/elseif-Ketten

Schnelltest

Was geschieht in einem match-Ausdruck, wenn kein Arm übereinstimmt und kein default vorhanden ist?

Zusammenfassung: switch und match

Wichtige Unterschiede:

  • switch – lockerer Vergleich, Fall-through, PHP 4+
  • match – strikter Vergleich, kein Fall-through, gibt einen Wert zurück, PHP 8+
  • match löst ohne default UnhandledMatchError aus
  • match-Arme akzeptieren mehrere durch Kommas getrennte Werte

Als Nächstes: for- und while-Schleifen.

Häufig gestellte Fragen

Ist die Lektion „Switch- und Match-Anweisungen“ kostenlos?

Ja — der vollständige Text von „Switch- und Match-Anweisungen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Switch- und Match-Anweisungen“?

Verwenden Sie switch und PHP 8 match für Logik mit mehreren Verzweigungen. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Switch- und Match-Anweisungen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. if, elseif und else
  2. Switch- und Match-Anweisungen
  3. for- und while-Schleifen
  4. foreach und Schleifensteuerung
← Zurück zu PHP Academy