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:
issetaufrufen und das Ergebnis negieren (das!)$myGET['blah'] bestimmen und1erhalten, wenn'blah'` nicht vorhanden ist (das ??)- Testen, ob das Ergebnis von (2) ungleich
1ist - 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