Ternärer Operator - warum will der nicht?

  • Guten Morgen,

    warum funktioniert das nicht (Internal Server Error 500):

    [PLAIN]
    <?php
    function_exists('exec_sem_list') ? exec_sem_list() : echo '<h3>ERROR: Function not found!</h3>';
    ?>
    [/PLAIN]

    als normale if/else Anweisung aber schon?

    [PLAIN]
    <?php
    if (function_exists('exec_sem_list')) {
    exec_sem_list();
    } else {
    echo '<h3>ERROR: Function not found!</h3>';
    }
    ?>
    [/PLAIN]

    Vermute mal, ich hab da was übersehen, aber ich komm alleine nicht drauf. Was soll ich sagen... ;)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Zitat von "Marcus[IS

    , post: 792622, member: 25287"]Mojn,


    Ja.
    Die Tatsache das diese Anweisung nur für Abfragen in einer if else Schleife verwendet wird, um zu prüfen ob eine Funktion vorhanden ist.
    https://www.php.net/manual/de/function.function-exists.php

    ???
    Das ist mir so nicht einsichtig. Erstens: function_exists() hat als Rückgabewert bool, also true oder false. Und zweitens ist doch der tenäre operator (wenn Ausdruck wahr) ? (mache das hier) : (ansonsten das hier) nichts anderes als das normale if-else-Konstrukt. Oder etwa nicht?
    Oder anders gefragt: Du schreibst er wird nur für eine if else Schleife verwendet. Das ist doch die tenäre Schreibweise genau so, zumindest verstehe ich das so.

  • Wenn Du das PHP Error Log anschaust solltest Du bei Deinem Code sowas finden, das hilft ggf. schonmal etwas:

    Code
    Parse error: syntax error, unexpected 'echo' (T_ECHO) ...


    Das [FONT=Courier New]echo[/FONT] hat dort nichts verloren.

    Eine richtigere Variante Deines Codes (aber nicht die wirklich gedachte Anwendung des Operators) wäre z.B.:

    Code
    echo function_exists('exec_sem_list') ? exec_sem_list() : '<h3>ERROR: Function not found!</h3>';


    Dann wird entweder der Rückgabewert Deiner Funktion oder Dein Fehlertext ausgegeben.

    Mehr zu diesem Operator siehe z.B. in der PHP Dokumentation, mit WordPress hat das gar nichts zu tun.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!