[Frage] Trinitäts-Operator
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
benutzt code
code
einsatz
ergebnis
erwarten
fehlermeldung
hilfreichen tipp
klammern
lesbarkeit
manual
operator
stelle
text
unerwarteten ergebnissen
url
variabel setzen
vergleich
welt
wissen
-
Bisher habe ich diese immer wie folgt benutzt:
Nun wollte ich wissen was für eine Fehlermeldung ausgegeben wird wenn ich statt true und false zwei weitere Vergleiche stelle.echo (2 == 2) ? '1: TRUE' : '1: FALSE';
Das Ergebnis hat mich etwas überrascht.
Das Ergebnis ist immer 2: FALSEecho (2 == 2) ? (2 > 3) ? '1: TRUE' : '1: FALSE' : (2 > 3) ? '2: FALSE' : '2: TRUE' ;
Scheinbar habe ich noch nicht richtig verstanden wie das ganze Funktioniert.
Kann mir jemand erklären wieso als Ergebnis immer 2: FALSE ausgegeben wird? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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.
-
Vielen dank für diesen Hilfreichen Tipp
[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 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage