Hallo Leute,
also ich hab da ein Problem, hoffenltich könnt ihr mir da weiter helfen. Hab schon viel zu viel Zeit damit vergeudetet.
Ich habe eine Baumstruktur, dass ich durchsuchen möchte.
Sobald der gesuchte Knoten gefunden wird, soll der Knotgen zurückgegeben werden und die Funktion verlassen - also eine stinknormale rekursive Tiefensuche.Die Funktion sieht folgendermaßen aus:
function findNode($rootnode, $searchnodeid){
if($rootnode->getId() == $searchnodeid){
echo "gefunden";
return $rootnode;
}else{
$childarray = $rootnode->getSubnodes();
foreach($childarray as $nextnode){
echo $nextnode->getId()."-".$searchnodeid."|";
findNode($nextnode, $searchnodeid);
}
}
}Bei Testbildschirmausgaben stelle ich fest, dass in die If-Abfrage richtig funzt. Also der Text "gefunden" wird ausgegeben, aber der return funzt nicht und der Baum wird weiter durchlaufen, bis am Ende null zurück gegeben wird.
Warum funzt return $rootnode nicht??
Danke allen in Voraus!
Gruß
Hakan
Du solltest vielleicht in der foreach eine If-Abfrage einbauen.
Wenn findNode was zurückgibt beenden, ansonsten weiter.
Dann sollten sich alle Funktionsaufrufe beenden.
GodLike