PHP if else für bedingte Logik und Verzweigung

PHP if else wertet einen booleschen Ausdruck aus und führt abhängig vom Ergebnis einen von zwei oder mehr Codeblöcken aus. Nutze elseif, um zusätzliche Bedingungen zu verketten, wenn Ergebnisse sich gegenseitig ausschließen und die Reihenfolge zählt. Nur der erste passende Zweig wird ausgeführt, daher sollte die restriktivste Bedingung zuerst stehen. Damit ist if/elseif/else die Standard-Kontrollstruktur für jede Verzweigungslogik mit Bereichsprüfungen, zusammengesetzten Ausdrücken oder gemischten Typen.

PHP If Else Beispiel Für Bedingte Verzweigung

Ausgabe:

Die Ausgabe erscheint hier...

Ausgabe:

Note: B

So Funktioniert Dieses Beispiel

  1. $punktzahl enthält den Integer-Wert 82.
  2. Die if-Bedingung $punktzahl >= 90 ergibt false, daher überspringt PHP diesen Block.
  3. Die elseif-Bedingung $punktzahl >= 80 ergibt true, daher führt PHP den zweiten Block aus und gibt Note: B aus.
  4. Der else-Block läuft nicht, weil bereits ein vorheriger Zweig getroffen hat. PHP beendet die Kette nach dem ersten truthy Zweig.

Was Ist elseif In PHP?

PHP elseif fügt einem bestehenden if-Block eine weitere Bedingung hinzu. PHP wertet jedes elseif der Reihe nach aus, führt den ersten true-Treffer aus und überspringt den Rest der Kette. Du kannst beliebig viele elseif-Zweige verwenden, doch ab mehr als drei oder vier ist match oder ein Lookup-Array meist lesbarer. In der Klammer-Syntax verhalten sich else if (zwei Wörter) und elseif (ein Wort) identisch, in der alternativen Syntax (if: ... endif;) ist nur das einteilige elseif gültig.

Häufige Fehler Mit PHP If Else

= statt == oder === in Bedingungen verwenden

Falsch:

if ($role = "admin") { // weist "admin" zu, immer truthy
    echo "Zugriff erlaubt";
}

Richtig:

if ($role === "admin") {
    echo "Zugriff erlaubt";
}

Eine Zuweisung innerhalb von if ändert die Variable und gibt den zugewiesenen Wert zurück. Dadurch kann der Zweig bedingungslos laufen.

Auf Einrückung statt auf Klammern vertrauen (dangling else)

Falsch:

if ($isAdmin)
    if ($isActive)
        echo "ok";
    else
        echo "kein Admin"; // gehört zum inneren if

Richtig:

if (!$isAdmin) {
    echo "kein Admin";
} elseif ($isActive) {
    echo "ok";
}

Ohne Klammern bindet else an das nächstgelegene noch offene if. Nutze Klammern oder strukturiere die Logik in eine einzige if/elseif/else-Kette um.

PHP If/Elseif vs Switch vs Match

Merkmalif/elseifswitchmatch (PHP 8+)
VergleichstypBeliebiger AusdruckLocker (==)Strikt (===)
Gibt einen Wert zurückNeinNeinJa
Fall-throughN/AJa, außer mit breakNein
Am besten fürBereichsprüfungen, kombinierte BedingungenViele diskrete Werte mit gemeinsamer LogikStrikte Wertzuordnung zu einem Ergebnis

Nutze if/elseif, wenn Bedingungen Bereiche, kombinierte Logik oder Funktionsaufrufe enthalten. Wechsle zu match, wenn diskrete Werte per strengem Vergleich auf Ergebnisse abgebildet werden. Nutze switch, wenn Fall-through oder Anweisungsblöcke pro Case nötig sind.

Weitere Beispiele

Guard Clause zur Reduktion von Verschachtelung:

function process($input) {
    if (!is_string($input)) {
        return "ungültiger typ";
    }
    if ($input === "") {
        return "leere zeichenfolge";
    }
    return strtoupper($input);
}

Frühe Returns ersetzen verschachtelte if/else-Bäume und halten die Hauptlogik auf der obersten Einrückungsebene.

Ternäre Kurzform für einfache Zuweisungen mit zwei Zweigen:

$label = ($count > 0) ? "hat elemente" : "leer";

Wenn der Zweig nur einen einzelnen Wert erzeugt, ersetzt der ternäre Operator ? : einen vollständigen if/else-Block in einem Ausdruck.

FAQ

Was ist der Unterschied zwischen elseif und else if in PHP?

In der Klammer-Syntax ({ }) sind beide gleichwertig. PHP behandelt else if als else gefolgt von einem verschachtelten if. In der alternativen Syntax (if: ... endif;) kompiliert nur das einteilige elseif. Nutze am besten überall elseif, um Syntaxfehler beim Umstellen des Stils zu vermeiden.

Sollten Bedingungen in PHP == oder === verwenden?

== nutzt Type Juggling: 0 == "foo" war in PHP 7 true (in PHP 8 für nicht numerische Strings auf false geändert). === vergleicht Wert und Typ ohne implizite Konvertierung. Bevorzuge === für vorhersehbare Ergebnisse, besonders bei Nutzereingaben oder gemischten Typen.

Kann man in PHP mehrere elseif-Zweige haben?

Ja. PHP erlaubt beliebig viele elseif-Zweige in einer Kette. Bedingungen werden der Reihe nach geprüft, und nur der erste truthy Zweig läuft. Wenn keiner passt und ein else vorhanden ist, dient er als Standardzweig. Wächst die Liste über vier oder fünf Zweige, sind match oder ein Lookup-Array meist lesbarer.