dedlfix: Würgaround für zirkuläre Referenzen ...

Beitrag lesen

echo $begrüßung;

Du kannst den Baum trotzdem nachbauen, und debei erstmal nach gleichen Namen oder Namensteilen suchen (von hinten auflösen).

Naja, aber in (verschachtelten) PHP-Arrays sind ja gleiche Namen (Keys) durchaus erlaubt, wenn sie sich in verschiedenen Hierachie-Ebenen befinden. Und gleiche Namen deuten ja noch nicht auf identische Array-Einträge hin. Das würde eher in "Raten und Vermuten" ausarten.

Da ein

$a = array(
    array('key' => 'value'),
    array('key' => 'value'));

problemlos (aus Sicht von PHP) verwendet werden kann (man beachte das doppelte 'key'), ist dies wirklich keine Lösung.

Ich bin immer noch dagegen, von Hierarchie-Ebenen oder Dimensionen bei PHP-Arrays zu sprechen. Dadurch wird man nur zu sehr davon abgelenkt, dass ein PHP-Array einfach nur ein Gebilde ist, das mehrere Werte zusammenfassen kann. Dass diese Werte einfachen oder komplexen Typs sein können, sollte bei der Betrachtung eines Array keine Rolle spielen. Diese Eigenschaften spielen erst dann eine Rolle, wenn die einzelnen Werte an sich und für sich selbst betrachtet werden.

Als ich aufgrund der ursprünglichen Frage nach einer Lösung suchte, bin ich auf der debug_zval_dump-Handbuchseite auf einen Link gestoßen, der sich mit der Variablen- und Referenzenverwaltung von PHP befasst: References Explained (by Derick Rethans). Danach bin ich zu dem Schluss gekommen, dass wohl nur eine Erweiterung von PHP die für das Problem fehlenden Funktionen is_reference() get_all_references() liefern können wird.

echo "$verabschiedung $name";