Hallo Jörg,
Ausführungsreihenfolge nach Priorität:
- !
- &&
- !=
- ??
Nein. Das ist sie nicht ganz. !=
hat eine höhere Priorität als &&
, damit Du Ausdrücke schreiben kannst wie $a != 3 && b != 4
, ohne klammern zu müssen.
So rum ist es richtig:
- !
- !=
- &&
- ??
Und ich schnuppere ein Mistverständnis bei Dir, denn Du schriebst:
Das Einzige, was ich dann komisch finde, ist, dass auch die gekürzte Version funktioniert, obwohl doch das ! in der Priorität vor dem && steht?
Das !
steht auf Rang 1. Und Rang 1 bedeutet: Höchster Rang. Wird zuerst ausgeführt.
Das ??
ist am niedrigsten, deshalb wird das !=
hinter dem ?? null
Part zuerst ausgeführt und damit sagst Du, dass TRUE
einzusetzen ist, nämlich null != 1
, wenn der Teil links vom ??
undefiniert ist. Das ist einer der Fehler gewesen.
Und dann ist &&
ebenfalls höher als ??
, deswegen wird der ganze Klumpatsch links vom ??
ausgeführt, bevor er sich das ??
anschaut. Er möchte also !isset($_POST...) && $myGET['blah']
bestimmen, bevor er sich dem ??
zuwendet, und deswegen mault er rum, dass er 'blah'
in $myGET
nicht findet.
Du möchtest:
isset
aufrufen und das Ergebnis negieren (das!
)$myGET['blah'] bestimmen und
1erhalten, wenn
'blah'` nicht vorhanden ist (das ??)- Testen, ob das Ergebnis von (2) ungleich
1
ist - Die Ergebnisse von 1 und 3 mit
&&
verknüpfen
Das hast Du in deinem "du meinst diese hier" Beispiel sehr schön geklammert und danach auch sehr schön die Klammern, die wegen der Operatorenrangfolge unnötig sind, wieder entfernt.
Rolf
sumpsi - posui - obstruxi