Du rufst zwar die Funktion rekursiv auf, aber du speicherst das Ergebnis nicht ab. Beim letzten Fall, wo der else-Zweig durchlaufen wird, erzeugt er die richtige Ausgabe. Nach dem Return ist das Ergebnis verloren, da dich im if-Zweig befindest die Rückgabe von deiner Funktion ignorierst:
while(list($idx,$title,$subcat)=mysql_fetch_row($r es)) {
if(!is_array($ar)) $ar=array();
array_push($ar,"$title");
$i++;
dlpath($subcat,$i,$ar); // Hier ist der Fehler !!!
$ar = dlpath($subcat,$i,$ar); // so ist er weg
}
[/PHP]
Das sagt mir zumindest meine Logik.