Mailinglisten-Archive |
Hallo Remo, Am Samstag, 17. März 2007 09:58 schrieb Remo Fritzsche: > Oftmahls greiffe ich auf einen index eines Arrays zu, der nicht > existiert. z.B.: > > $a = $_GET['unknownIndex']; > > Daraus ergibt sich natürlich die Fehlermeldung: > > Note: Undefined index > > Wenn ich es wie folgt mache, ist das Problem nicht da: > > if (isset($_GET['unknownIndex'])) { > $a = $_GET['unknownIndex']; > } > > Was ist an der Funktion isset anders, als wenn ich z.B. einen > Vergleich mit > > if ($_GET['unknownIndex'] == null) > > oder > > if ($_GET['unknownIndex'] == '') > > mache? der Unterschied ist zunächst einmal, daß isset() auf die Existenz der Variable prüft, während die letzteren beiden Abfragen auf den Inhalt der Variablen prüfen und dabei bereits die Existenz der Variablen voraussetzen. Ist diese Voraussetzung nicht erfüllt, tritt dann die genannte Warnung auf. Die interessante Frage ist nun, warum nicht schon das bloße Übergeben einer nicht existenten Variable an die Funktion isset() zu einer Fehlermeldung führt. Ich habe mal schnell folgenden Textcode programmiert: <?php function testf($param) { return '<br />#Test'; } echo '<br />#'.isset($_GET['x']); echo '<hr />'; echo testf($_GET['x']); ?> In der Funktion testf() wird nicht auf den Parameter zugegriffen. Trotzdem kommt die Warnung "Undefined Index". Bei isset() kommt die Warnung hingegen nicht. Eventuell behandelt der Parser die Übergabe einer nicht definierten Variable bei isset() anders, weil diese Funktion in PHP eben gerade dazu dienen soll, auf die Existenz einer Variable zu prüfen. Das ist aber nur eine Vermutung. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive