W3docs

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 5

Da $myNumber == 4 falsch, aber $myNumber == 5 wahr ist, wird der zweite Block ausgeführt und else wird nie erreicht.

„Probier es selbst" ist für dieses Beispiel nicht verfügbar.

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: B

Ein 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: two

Die 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 content

Dies 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 >= 70 an erster Stelle jede bestandene Note als "C" kennzeichnen.
  • elseif benötigt ein vorangestelltes if. Es kann nicht allein stehen — es gehört immer zu einer bestehenden if-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, die elseif erweitert
  • else — der allgemeine Fallback-Zweig
  • endif — schließt die Doppelpunkt-Syntax-Form
  • switch — mehrseitige Verzweigung auf einen Wert

Übungen

Übung
Was trifft auf die 'elseif'-Anweisung in PHP zu?
Was trifft auf die 'elseif'-Anweisung in PHP zu?
Was this page helpful?