phpbar.de logo

Mailinglisten-Archive

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

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

Andreas Ahlenstorf lists at ahlenstorf.ch
Sam Mar 17 14:21:59 CET 2007


Am 17.03.2007 um 11:55 schrieb Lutz Zetzsche:

> Richtig soweit? :-)

Erm... bei meiner Erklärung ging's eher darum, warum foo(& 
$undefined_var) keine Notice wirft. Sonst ist's relativ einfach: Es  
kann nur auf Ebene der Engine geprüft werden, ob eine Variable  
existiert oder nicht, ohne dass es eine Notice beim Variablenzugriff  
gibt. Darum brauchen wir isset() und empty().

> Wenn PHP innerhalb von isset vor der Evaluierung schon automatisch  
> einen
> Eintrag in die Symboltabelle macht, wie kann die Funktion dann noch
> herausfinden, daß die Variable vielleicht nicht existiert? Wo merkt
> sich PHP das, daß es den Eintrag in die Symboltabelle erst innerhalb
> von isset gemacht hat? Bzw. wie Symboltabelle aus? Steht da vielleicht
> drin, "wer" wann den Eintrag gemacht hat?

isset() macht keinen Eintrag in die Symboltabelle, sondern foo(& 
$undefined_var).

$ php -r 'error_reporting(E_ALL); function foo(&$undef) { var_dump 
(isset($undef)); } foo($bar); '
bool(false)
$ php -r 'error_reporting(E_ALL); function foo($undef) { var_dump 
(isset($undef)); } foo($bar); '

Notice: Undefined variable: bar in Command line code on line 1
bool(false)

Gruss,
Andreas



php::bar PHP Wiki   -   Listenarchive