Sven Rautenberg: Parse Error?!?

Beitrag lesen

Moin!

Frage 1: Warum führt folgende Bedingung zu einem Parse-Error?

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).

- Sven Rautenberg

--
Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!