elseif
Das Schlüsselwort "elseif" ist eine Kontrollstruktur in PHP, die zusammen mit "if" verwendet wird, um Code auszuführen, wenn die "if"-Bedingung falsch ist
Das PHP-Schlüsselwort elseif
elseif ist eine Kontrollstruktur in PHP, die einer if-Anweisung eine zusätzliche Bedingung hinzufügt. Ihr Block wird nur ausgeführt, wenn alle vorherigen Bedingungen falsch waren und die eigene Bedingung wahr ist. Sie können so viele elseif-Klauseln verketten, wie Sie benötigen, optional mit einem abschließenden else, das alles andere abfängt.
Diese Seite behandelt die Syntax, die Auswertung der Bedingungen der Reihe nach, die alternative Doppelpunkt-Syntax, den Unterschied zwischen elseif und else if (eine leicht zu machende Verwechslung) sowie häufige Fallstricke.
Syntax
<?php
if (condition1) {
// runs if condition1 is true
} elseif (condition2) {
// runs if condition1 is false AND condition2 is true
} elseif (condition3) {
// runs if condition1 and condition2 are false AND condition3 is true
} else {
// runs if none of the above conditions are true
}PHP wertet die Bedingungen von oben nach unten aus und stoppt bei der ersten wahren Bedingung — dieser Block wird ausgeführt, und der Rest der Kette (einschließlich else) wird übersprungen. Das abschließende else ist optional; ohne es passiert nichts, wenn alle Bedingungen falsch sind.
Ein einfaches Beispiel
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} elseif ($myNumber == 5) {
echo "Number is 5";
} else {
echo "Number is not 4 or 5";
}
// Output: Number is 5Da $myNumber == 4 falsch, aber $myNumber == 5 wahr ist, wird der zweite Block ausgeführt und else wird nie erreicht.
Mehrere Bedingungen verketten
elseif glänzt, wenn Sie einen Wert auf mehrere sich gegenseitig ausschließende Bereiche abbilden müssen. Der erste zutreffende Zweig gewinnt, also ordnen Sie Ihre Bedingungen vom Spezifischsten zum Allgemeinsten:
<?php
$score = 82;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo "Grade: {$grade}";
// Output: Grade: BEin Wert von 82 besteht den ersten Test (>= 90) nicht, besteht aber den zweiten (>= 80), sodass $grade den Wert "B" erhält und die verbleibenden Zweige übersprungen werden.
elseif vs. else if
PHP akzeptiert sowohl elseif (ein Wort) als auch else if (zwei Wörter) — sie verhalten sich identisch, wenn Sie geschweifte Klammern verwenden:
<?php
$x = 2;
if ($x === 1) {
echo "one";
} else if ($x === 2) { // same as elseif
echo "two";
}
// Output: twoDie Ausnahme bildet die alternative Doppelpunkt-Syntax (siehe unten): Dort müssen Sie elseif als ein Wort schreiben. else if ist ein Syntaxfehler innerhalb eines if: ... endif;-Blocks. Um Überraschungen zu vermeiden, empfehlen viele Stilrichtlinien, stets das einwörtige elseif zu verwenden.
Alternative (Doppelpunkt-)Syntax
Beim Mischen von PHP und HTML in Templates ist die Doppelpunkt-Syntax oft lesbarer als geschweifte Klammern. Sie verwendet endif; zum Schließen des Blocks:
<?php
$role = "editor";
if ($role === "admin"):
echo "Full access";
elseif ($role === "editor"):
echo "Can edit content";
else:
echo "Read only";
endif;
// Output: Can edit contentDies passt gut zum Schlüsselwort endif in HTML-Templates. Lesen Sie mehr in der Übersicht zu if / else / elseif.
Häufige Fallstricke
=vs.==. Innerhalb einer Bedingung weist=zu, statt zu vergleichen. Verwenden Sie==für den losen Vergleich oder===für den strikten (typbewussten) Vergleich.- Die Reihenfolge ist entscheidend. Da der erste wahre Zweig gewinnt, kann eine weit gefasste Bedingung zu Beginn spezifischere Bedingungen weiter unten verdecken. Im Benotungsbeispiel würde
$score >= 70an erster Stelle jede bestandene Note als"C"kennzeichnen. elseifbenötigt ein vorangestelltesif. Es kann nicht allein stehen — es gehört immer zu einer bestehendenif-Kette.
Wann elseif vs. switch verwenden?
Verwenden Sie elseif für Bereiche, kombinierte Bedingungen oder Tests gegen verschiedene Variablen. Wenn Sie einen einzelnen Wert mit vielen festen Optionen vergleichen, ist eine switch-Anweisung in der Regel übersichtlicher.
Siehe auch
if— die Anweisung, dieelseiferweitertelse— der allgemeine Fallback-Zweigendif— schließt die Doppelpunkt-Syntax-Formswitch— mehrseitige Verzweigung auf einen Wert