Hi!
echo $var1=="Hund"?"Frisst Knochen":"Frisst Fisch";
Vermute, dass die Klammern um $var1=="Hund" dringend gebraucht werden.
Das Handbuch-Kapitel zu den Operatoren gibt auch hier die Antwort, nämlich im Abschnitt Operator Precedence (Rangfolge). Die Vergleichsoperatoren, wozu auch == gehört, sind stärker als ?:, die Klammern sind also nicht erforderlich.
Generell müssen die Klammern nicht gesetzt werden, wenn die Operatoren-Rangfolge der gewünschten Abarbeitungsreihenfolge entspricht. Sie trotzdem zu setzen, kann helfen die eigene Intention deutlicher sichtbar zu machen. Damit fällt dann bei einer Code-Durchsicht die Beantwortung solcher Fragen einfacher: "Hat er nun die Operatorenreihenfolge beachtet und den Ausdruck bewusst so hingeschrieben oder ist das ein Fehler und es hätte geklammert werden müssen?"
Lo!