Mam funkcję do budowania ścieżek dla katalogów na podstawie bazy.
foreach($allDirs as $ad){ if($ad->root == 1){ }else{ $p = $this->bulidPath($ad,null); // jeśli nie to budujemy dla niego ścieżkę (null oznacza że początkowa ścieżka jest pusta) } }
gdzie lecę po każdym katalogu i jeśli jest rootem to wrzucamy do tablicy, jeśli nie to wywyołujemy funkcję rekurencyjną która ma nam zbudować ścieżkę do tego katalogu.
public function bulidPath($dir, $path){ $parent = $this->getParent($dir); //sprawdzam czy katalog ma jakiś nadrzędny nad sobą if($parent){ if($path !== null){ //jeśli tak i ścieżka nie jest pusta do doklejamy nazwę katalogu dościeżki i idziemy dalej $path = $dir->name.'/'.$path; $this->bulidPath($parent, $path); }else{ //jeśli tak to przypisujemy do ściezki nazwę katalogu $path = $dir->name; $this->bulidPath($parent, $path); } }else{ // jeśli katalog nie ma katalogu nadrzędnego oznacza to, że doszliśmy do roota więc zwracamy ścieżkę. $path = $dir->name.'/'.$path; return $path; } }
No i jak funkcja rekurencyjna kilka razy się wywoła to ładnie skleja mi ścieżkę. Natomiast jak następuje return to przy printowaniu $p ciągle jest null (przed returnem echo $path pokazuje całą ścieżkę a już przy echo $p jest null). Proszę o wskazówkę, bądź rozwiązanie.
Pozdrawiam!
Piotrek
Może chociaż pół wskazówki

