Sie tun nichts falsches; Sie haben einen Elternteil, der eine Referenz auf seine Kinder hat, und jedes Kind hat eine Referenz zurück zu seinem Elternteil. Wenn Sie das Stammobjekt var_dump()
durchlaufen, iteriert es über die untergeordneten Elemente, um sie zu drucken, und da jedes untergeordnete Element einen Verweis auf das übergeordnete Element hat, wird es erneut ausgeführt. Da dies normalerweise zu einer Endlosschleife führen würde (Eltern -> Kind -> Eltern -> Kind -> ...), führt PHP eine Liste von Objekten, die es bereits besucht hat, und wenn es eines entdeckt, versucht es nicht es wieder, sondern stattdessen "RECURSION".
Das einzige, worauf zu achten ist, ist, dass PHP Referenzzählung für seine Speicherbereinigung verwendet, und zirkuläre Konstrukte wie diese selbst nicht auflösen. Dies führt dazu, dass das Skript Speicher ausgibt, was möglicherweise kein Problem darstellt. Um dies zu beheben, müssen Sie manuell bereinigen: Bevor das übergeordnete Objekt den Gültigkeitsbereich verlässt, müssen Sie alle übergeordneten Zeiger auf null setzen.
Siehe auch: http://bugs.php.net/bug.php?id=33595
ein Code wäre nett! –
Es klingt wie Sie haben einen Zyklus in Ihrem Diagramm (ein Elternteil, das auch ein Kind eines seiner Nachkommen ist), aber ohne Code oder Beispieldaten zu sehen, ist es schwer zu sagen, sicher. – FrustratedWithFormsDesigner
Solange Sie sicher sind, dass die Rekursion nicht zu tief ist, ist es in Ordnung. Andernfalls können Probleme auftreten, z. Codierung des Objekts mit JSON. – usoban