![]() Mailinglisten-Archive |
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