kostenloser Webspace werbefrei: lima-city


[Frage] Trinitäts-Operator

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    Bisher habe ich diese immer wie folgt benutzt:
    echo (2 == 2) ? '1: TRUE' : '1: FALSE';
    Nun wollte ich wissen was für eine Fehlermeldung ausgegeben wird wenn ich statt true und false zwei weitere Vergleiche stelle.
    Das Ergebnis hat mich etwas überrascht.
    echo (2 == 2) ? 
    	(2 > 3) ? '1: TRUE' : '1: FALSE'
    :
    	(2 > 3) ? '2: FALSE' : '2: TRUE'
    ;
    Das Ergebnis ist immer 2: FALSE

    Scheinbar habe ich noch nicht richtig verstanden wie das ganze Funktioniert.
    Kann mir jemand erklären wieso als Ergebnis immer 2: FALSE ausgegeben wird?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wenn du Klammern um die Teilausdrücke machst, funktioniert es, so wie du es erwarten würdest.

    Der Ternary-Operator wird von links nach rechts ausgewertet. Das kann zu überraschenden Ergebnissen führen. Daher sollte man nicht geizig mit Klammern sein.

    Siehe auch: PHP Doku und da das Example #3

    Beitrag zuletzt geändert: 28.3.2011 12:21:07 von bladehunter
  4. Generell sollte man den Einsatz von Klammern forcieren, da es nicht nur zu unerwarteten Ergebnissen führen kann, wie es in deinem Beispiel eindrucksvoll bewiesen wurde, sondern auch die Lesbarkeit des Codes enorm gesteigert wird.
  5. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    Vielen dank für diesen Hilfreichen Tipp :biggrin:

    [EDIT]
    Gibt es eine Möglichkeit das man mehr als eine Variabel setzen kann?
    Siehe Beispiel:
    (2 == 2) ? 
    	((2 > 3) ? $text = '1: TRUE' : ($text = '1: FALSE'; $text .= ' Hallo Welt!' )
    :
    	((2 > 3) ? $text = '2: FALSE' : $text = '2: TRUE')
    ;
    echo $text;


    Beitrag zuletzt geändert: 28.3.2011 13:15:48 von siteplayer
  6. wagnerm schrieb:
    Generell sollte man den Einsatz von Klammern forcieren, da es nicht nur zu unerwarteten Ergebnissen führen kann, wie es in deinem Beispiel eindrucksvoll bewiesen wurde, sondern auch die Lesbarkeit des Codes enorm gesteigert wird.

    Möge das Lisp mit dir sein.

    siteplayer schrieb:
    [EDIT]
    Gibt es eine Möglichkeit das man mehr als eine Variabel setzen kann?

    Nein
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!