Hallo,
tja, bei copy & paste unterlaufen einem auch mal Fehler.
Der Aufruf bei meiner dritten Funktion ist in Wirklichkeit der Aufruf bei der vierten Funktion (die ich Dir vorenthalten habe).
Ich hatte dein Beispiel mal umgesetzt, um auszuprobieren, ob ich den Pfad in das Array bekomme und es lief erstmal nicht. Du glaubst nicht, welche Freude mir diese Fehler gemacht hat, nachdem ich ihn gefunden hatte ;)
Ich sehe mit der derzeitigen Konstruktion kein besonderes Problem.
Stimmt, ich habe mich dennoch für dafür entschieden, die gesonderte Behandlung der Wurzel in die Funktion einzubauen und auf die Scheife beim Aufruf zu verzichten, weil ich es übersichtlicher finde:
#Funktion
function tree_traversal($root, $path) {
$result = array();
if (isset($root['site_id'])) {
$path[]= $root['link_title'];
$result[$root['site_id']] = array(
'value' => $root['site_id'],
'text' => $root['link_title'],
'pfad' => $path
);
}
if (isset($root['children']) && is_array($root['children'])) {
foreach($root['children'] as $subtree => $value) {
$result = $result + tree_traversal($value, $path);
}
}
return $result;
}
#Aufruf
$new_array = tree_traversal(array('children'=>$temp), array());
ja klar: mit meiner vierten Funktion
;)
Nicht unbedingt. Es gibt ein extrem elegantes, effizientes Sortierverfahren, dass genauso vorgeht: Heapsort.
Danke für den Hinweis. Damit muss ich mich länger beschäftigen. Heute will ich endlich "tree_traversal_with_path" abgeschlossen haben ...
besten Dank und gruesse,
heinetz