KD-one: Parse Error?!?

Beitrag lesen

Hallo Sven,

if (isset($_GET['content']) && (isset($_GET['content']=="wert1") || isset($_GET['content']=="wert2")))

isset() ist eine Funktion, die die Existenz einer Variablen prüft.

isset($_GET['content']) ist ein korrekter Aufruf.

isset($_GET['content']=="wert1) ist kein korrekter Aufruf, weil das Argument von isset() keine Variable mehr ist, sondern ein Ausdruck, der entweder wahr oder falsch ist.

Wenn du wissen willst, ob $_GET['content'] einen bestimmten Wert hat, lass isset() einfach weg.

Und da PHP Kurzschluß-Evaluation benutzt, ist folgender Ausdruck problemlos möglich, auch wenn $_GET['content'] nicht existiert und normalerweise eine Notice erzeugt:

if (isset($_GET['content']) && (($_GET['content']=="wert1") || ($_GET['content']=="wert2")))

Der zweite Teil des && wird nur ausgeführt, wenn er erste Teil wahr ist. Andernfalls kann die AND-Bedingung ja nicht mehr wahr werden - das Ergebnis der AND-Verknüpfung steht fest (falsch).

Ja, danke, ähnlich hatten es mir auch Philipp Hasenfratz und Sorgenkind Mech erklärt, aber leider sind diese beiden Postings bei einem Serverabsturz gelöscht worden.
Eigentlich hätte ich da auch selbst draufkommen können, aber, wie so oft, wenn man die Nase zu tief im "Dreck" stecken hat,... ;-)
Man sollte logische Überlegungen nicht nur auf das Problem eingrenzen sondern auch ab und zu die Umgebung mitbetrachten.
Ich habe Klammern gezählt und was mir sonst noch so alles eingefallen ist, aber die Logik der Syntax zu hinterfragen, auf die Idee bin ich nicht gekommen.
Danke dir.

Gruß

Kurt

--
"Feindseligkeit ist eine persoenliche Unabhaengigkeitserklaerung."  (Aldous Leonard Huxley; engl. Schriftsteller u. Kulturkritiker; 1894-1963)
http://elektro-dunzinger.at
http://shop.elektro-dunzinger.at