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 activematch 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; // Turkicmatch 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; // BRü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 Foundswitch 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); // positiveWann 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
switchfü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
UnhandledMatchErroraus - 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
- if, elseif und else
- Switch- und Match-Anweisungen
- for- und while-Schleifen
- foreach und Schleifensteuerung