W3docs

else

Das Schlüsselwort "else" ist eine Kontrollstruktur in PHP, die zusammen mit "if" verwendet wird, um einen Codeblock auszuführen, wenn die Bedingung falsch ist.

Das PHP-Schlüsselwort else

else ist das Gegenstück zu PHPs if-Anweisung. Allein entscheidet if nur ob ein Codeblock ausgeführt wird; in Verbindung mit else lässt sich ein Fallback angeben, der läuft, wenn die if-Bedingung false ergibt. Zusammen drücken sie eine klare Verzweigung aus: „tue dies — andernfalls das."

Diese Seite behandelt die genaue Syntax, den Unterschied zwischen else, elseif und einer Kette von ifs, die alternative Doppelpunkt-Syntax für HTML-Templates sowie häufige Fehlerquellen (z. B. die Verwechslung von = und ==).

Syntax

Ein else-Block kann nur unmittelbar nach einem if (oder nach einem elseif) stehen. Er besitzt keine eigene Bedingung:

<?php

if (condition) {
  // runs when condition is truthy
} else {
  // runs when condition is falsy
}

Genau einer der beiden Blöcke wird ausgeführt — niemals beide und niemals keiner. Der else-Zweig fängt alles ab, was die if-Bedingung nicht abgedeckt hat — man muss die Gegenbedingung also nicht explizit ausschreiben.

Ein einfaches Beispiel

<?php

$myNumber = 5;

if ($myNumber == 4) {
  echo "Number is 4";
} else {
  echo "Number is not 4";
}

// Output: Number is not 4

Da $myNumber gleich 5 ist, ist die Bedingung $myNumber == 4 false, sodass die Kontrolle an den else-Block übergeben wird.

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

Was gilt als „falsy"?

Der else-Block wird ausgeführt, sobald die if-Bedingung falsy ist — nicht nur, wenn sie wörtlich false ist. PHP behandelt folgende Werte als falsy: false, 0, 0.0, "0", "" (leerer string), null und das leere array []. Alles andere gilt als truthy.

<?php

$cart = [];

if ($cart) {
  echo "You have items in your cart.";
} else {
  echo "Your cart is empty."; // an empty array is falsy
}

// Output: Your cart is empty.

Das ist praktisch für „Ist überhaupt etwas vorhanden?"-Prüfungen, aber Vorsicht: "0" und 0 sind falsy, sodass ein Wert, der eigentlich relevant ist, in den else-Zweig rutschen kann. Wenn man einen exakten Test braucht, sollte man explizit vergleichen (if ($x === 0)) statt sich auf Truthiness zu verlassen.

else vs. elseif vs. separate ifs

Ein einfaches if/else hat nur zwei Ergebnisse. Wenn mehr als zwei benötigt werden, greift man besser auf elseif zurück, anstatt unabhängige if-Anweisungen zu stapeln:

<?php

$score = 72;

if ($score >= 90) {
  echo "Grade: A";
} elseif ($score >= 70) {
  echo "Grade: B";
} else {
  echo "Grade: C or lower";
}

// Output: Grade: B

Die Kette stoppt beim ersten passenden Zweig, daher ist die Reihenfolge wichtig — die spezifischsten oder höchsten Bedingungen kommen zuerst. Zwei separate if-Blöcke würden beide Bedingungen unabhängig auswerten und könnten zwei Noten ausgeben. Einen umfassenderen Vergleich bietet PHP if, else, elseif.

Alternative (Doppelpunkt-)Syntax

Wenn PHP und HTML in einem Template gemischt werden, kann der geschweifte-Klammer-Stil schwer lesbar sein. PHP bietet eine alternative Syntax, die { durch : ersetzt und den Block mit endif schließt:

<?php $loggedIn = true; ?>

<?php if ($loggedIn): ?>
  <p>Welcome back!</p>
<?php else: ?>
  <p>Please log in.</p>
<?php endif; ?>

Beide Stile verhalten sich identisch; die Doppelpunkt-Form hält Templates schlicht übersichtlicher.

Verschachtelung

Ein if/else kann innerhalb eines anderen else-Zweigs stehen. Jedes else bindet sich immer an das nächste ungematchte if:

<?php

$age = 17;
$hasGuardian = true;

if ($age >= 18) {
  echo "Admitted.";
} else {
  if ($hasGuardian) {
    echo "Admitted with a guardian.";
  } else {
    echo "Not admitted.";
  }
}

// Output: Admitted with a guardian.

Wenn man sich mehr als ein oder zwei Ebenen tief verschachtelt, ist elseif oder eine switch-Anweisung in der Regel besser lesbar.

Häufiger Fehler: = vs. ==

Ein typischer Bug ist das Schreiben von = (Zuweisung) anstelle von == (Vergleich). Die folgende Zeile weist $x den Wert 4 zu, und da 4 truthy ist, wird der if-Zweig immer ausgeführt — else ist dadurch nicht erreichbar:

<?php

$x = 1;

if ($x = 4) {        // assignment, not comparison!
  echo "Always runs";
} else {
  echo "Never runs";
}

// Output: Always runs

Für den losen Vergleich verwendet man ==, für den strikten (typgenauen) Vergleich ===. Die Seite zu Vergleichsoperatoren listet alle auf.

Ternary: eine Kurzform für einfache Fälle

Wenn beide Zweige lediglich einen Wert liefern, ist der Ternary-Operator ?: eine kompakte Alternative zu einem vollständigen if/else:

<?php

$age = 20;
$status = $age >= 18 ? "adult" : "minor";

echo $status;

// Output: adult

Dies empfiehlt sich für kurze Einzelwert-Entscheidungen — Logik mit mehreren Anweisungen bleibt als echtes if/else klarer.

Zusammenfassung

  • else wird nur ausgeführt, wenn die vorherige if- (oder elseif-)Bedingung falsy ist; genau ein Zweig wird ausgeführt.
  • „Falsy" umfasst false, 0, "", null und [] — nicht nur das wörtliche false.
  • Für mehr als zwei Ergebnisse nutzt man elseif und die Doppelpunkt-/endif-Syntax in HTML-Templates.
  • Auf = vs. == achten und den Ternary-Operator ?: verwenden, wenn nur ein Wert ausgewählt werden muss.

Übungen

Übung
Was gibt die 'else'-Anweisung in PHP an?
Was gibt die 'else'-Anweisung in PHP an?
Was this page helpful?