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 11:55:38 CET 2007


Hallo Andreas,

Am Samstag, 17. März 2007 11:43 schrieb Andreas Ahlenstorf:
> Am 17.03.2007 um 11:34 schrieb Lutz Zetzsche:
> > was heißt Wunder... :-) Die interessante Frage ist: Angenommen,
> > isset()
> > bekäme den Parameter als Referenz übergeben, warum ist das dann im
> > Handbuch nicht ersichtlich? Zum Vergleich:
>
> Nicht isset() bekommt die Referenz, sondern die Funktion. In der
> Funktion ist die Referenz eine Variable, insofern gibt's du isset()
> eine Variable mit einer Referenz und nicht eine Referenz ;) Die
> Übergabe Variable->Referenz->Funktion gibt keine Notice, weil PHP
> automatisch einen Eintrag in der Symboltabelle erstellt, bevor die
> Evaluierung erfolgt. Insofern existiert dann die nicht existente
> Variable für PHP, auch wenn sie eigentlich nicht da ist.
>
> Ich hoffe, ich hab's halbwegs verständlich und richtig erklärt ;)

ich glaube, ja. Ich fasse aber zur Sicherheit noch einmal kurz in meinen 
Worten zusammen:

Man kann also einem Sprachkonstrukt irgendetwas übergeben, weil das 
Sprachkonstrukt selbst keine Funktion ist. Intern ruft das 
Sprachkonstrukt dann aber eine oder mehrere Funktionen auf, um seine 
Aufgabe zu erledigen. isset gibt den ihm übergebenen Parameter als 
Referenz an die Funktion weiter. echo gibt den Parameter hingegen 
offensichtlich als Wert weiter. Daher kommt ggf. bei echo 
eine "Undefined Index"-Warnung und bei isset nicht.

Richtig soweit? :-)

Dann habe ich aber zu Deiner Erklärung noch eine Frage:

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?

Ich hoffe, daß wird jetzt nicht zu speziell, aber wenn, dann würde ich 
es gerne richtig und ganz verstehen. :-)

Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive