phpbar.de logo

Mailinglisten-Archive

[php] Index von Arrays führen zu <Notes>

[php] Index von Arrays führen zu <Notes>

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Sam Mar 17 10:42:33 CET 2007


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