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