Bademeister: Abkürzung für OR

Beitrag lesen

Hi Kasimo,

Ich hatte eigentlich gehofft, dass es so etwas wie dies hier gibt:

if(1 <= $_GET['classid'] <= 7)

Vergleichsoperatoren in PHP vergleichen genau zwei Ausdruecke und geben true oder false zurueck.

Dass obiges nicht funktioniert, liegt daran, dass der Operator "<=" keine Assoziativitaet hat.
Und das aus gutem Grund - anderenfalls wuerde, etwa bei Linksassoziativitaet, der rechte Operator den vom linken zurueckgegebenen Wert true/false mit 7 vergleichen. true wuerde zu 1 und false zu 0 gecastet, und Deine Bedingung waere in jedem Falle erfuellt, da 1 und 0 kleiner als 7 sind. Ein Ausdruck wie

(0 <= 10 <= 3)

wuerde (mit jeder Assoziativitaet - rechts oder links) true ergeben - und das waere wohl kaum das, was Du Dir erhoffst.

Die Interpretation der Zeile im Sinne der mathematischen Kurzschreibweise ist hoechst informal, da sind es zwei unabhaengige Vergleiche, sie waeren etwa der Klammerung (a <= [ b ) <= c] gemaess. Das widerspricht konzeptionell jeder mir bekannten Programmiersprache.

viele Gruesse,
der Bademeister