phpbar.de logo

Mailinglisten-Archive

[php] print_r und rekursion

[php] print_r und rekursion

Johannes Schlueter schlueter at phpbar.de
Mit Aug 20 23:18:41 CEST 2003


On Wednesday 20 August 2003 21:51, Kai Meder wrote:
> wenn man das nun mit print_r versucht darzustellen kommt es
> logischerweise unweigerlich zu einem *RECURSION*

Dann nutze var_dump(), der verfolgt die Rekursion nicht ;-)

> meine frage ist jedoch, wie php das intern handhabt ?
> existiert diese "rekursion" auch intern oder tritt die erst bei einer
> rekursiven ausgabe auf ?
> sprich killt solch ein vorgehen den parser ? lokal l�ufts hier ganz
> fluffig ;)

Wenn eine Rekursion schon f�r PHP-Probleme bringen w�rde, g�be es ein Problem 
mit $GLOBALS, selbiges enth�lt eine Referenz auf sich selber ;-)

Also Intern gibt es f�r jede Variable einen so genannten zval/pval-Container 
(pval = zval, zval ist blo� der modernere Name..) Wenn Du jetzt Eine Variable 
$foo hast und mit $bar = &$foo eine Refrenz erstellst, wird ein neuer 
zval-Container erstellt, den beiden wird dann gesagt, dass sie Referenzen 
sind. �ber eine weitere Rekursion wird dort nicht "gedacht", die wird erst 
bei Bedarf ausgewertet. Naja, Details dazu finden sich im PHP-Source (wenn 
man viel Zeit hat *g*) oder in der einschl�gigen Literatur (z.B. R.Lerdorf, 
K.Tatroe: Programming PHP, O'Reilly 2002 hat mir neues Wissen bez�glich der 
Internas gebracht, zudem gibt es auch http://php.net/zend ist ganz praktisch 
um die Erste Extension zu schreiben, gef�llt mir pers�nlich aber nicht so 
gut...) Nunja, um den Bogen zum Thema zu schlie�en: Rekursive Datenstrukturen 
sind kein Problem.

> kind of offtopic: ist es schlechter stil mit solchen verschachtelten
> referenzen zu arbeiten oder v�llig legitim ?

imho schon, aber das sollen die "OOP-G�tter" erl�utern, die haben da mehr 
Ahnung ;-)

johannes

php::bar PHP Wiki   -   Listenarchive