echo $begrüßung;
printf('%s %s', $grussformel, $name); // echo find ich irgendwie doof ;-)
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.
Da müsste ich jetzt mal an genau so einem Beispiel-Array meinen Ansatz zur Erkennung zirkulärer Referenzen testen ...
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.
Naja, ich benutze den Begriff Hierachie, weil ich ein solches zusammengefasstes Gebilde ähnlich wie ein hierarchisch strukturiertes Verzeichnis (mit Unterverzeichnissen eben) "durchforsten" kann: das Verzeichnis mit opendir() und readdir() und das Array-"Gebilde" eben mit foreach(). Es gibt ja auch die Bezeichnungen Array-of-Array oder Hash-of-Hash -- nur die treffen den Kern der Sache auch nicht wirklich ... Ich wäre aber für eine exakte Begriffsbezeichnung durchaus dankbar. ;-) Dann kann man sich wenigstens klar ausdrücken, wenn man Fragen zum Thema stellt.
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).
Muss ich mir mal durchlesen ...
Falls ich PHP(4/5) richtig verstanden habe, ist jede Variable eine Referenz, oder genauer gesagt: Jede Variable besteht aus ihrem "Inhalt" und mindestens einem Zeiger (Referenz) auf diesen Inhalt.
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.
Nicht schön. Denn man kann beim Shared-Hosting selten PHP-Extensions einbinden. Außerdem müsste man erstmal eine solche Extension schreiben. Ich interessiere mich für das Ganze auch nur, weil die PHP-Funktionen wie print_r() und var_dump() zwar Informationen liefern, aber jede Funktion hat ihre Schwächen. So zeigt print_r() beispielsweise alle skalaren Variablen als String. Das sieht beispielsweise beim Typ BOOLEAN nicht toll aus. Auf der anderen Seite var_dump(): Hier wird zwar der Typ einer Variablen angegeben und auch der Wert korrekt, dafür ist die Ausgabe in einen String nicht möglich (oder nur über den Umweg mit Output-Buffering). Eine Funktion, die die Vorteile beider vereint, gibt es nicht. Ach ja, und var_export() erkennt zumindest unter PHP4 die "zirkulären Referenzen" nicht.
echo "$verabschiedung $name";
printf('%s%s', $verabschiedung, $my_name);
exit();
... Suchmaschinen-Blog ...