Zamiana funkcji na rekurencyjna

0

Hej! Mam maly problem z kodem PHPa. Otoz chcialbym zamienic ponizszy kod na rekurencyjny i nie za bardzo potrafie.
Chodzi tutaj o to, zeby wypisac wszystkie wartosci z tablicy galleryDir, ktora ma format w przyblizeniu:

Array ( [przyroda] => Array ( [przyroda1.jpg] => przyroda1.jpg [przyroda2.jpg] => przyroda2.jpg ) [sport] => Array ( [koszyk�wka] => Array ( [koszykowka1.jpg] => koszykowka1.jpg ) [pi?ka no?na] => Array ( [pn1.jpg] => pn1.jpg [pn2.jpg] => pn2.jpg [pn3.jpg] => pn3.jpg [pn4.jpg] => pn4.jpg ) ) ) ) 
            function showDirTree() {
                foreach($galleryDir as $klucz => $wartosc) {
                    echo $klucz."<br>";
                    foreach($wartosc as $klucz1 => $wartosc1) {
                        echo "-".$klucz1."<br>";
                        foreach($wartosc1 as $klucz2 => $wartosc2) {
                            echo "--".$klucz2."<br>";
                            foreach($wartosc2 as $klucz3 => $wartosc3) {
                                echo "---".$klucz3."<br>";
                            }
                        }
                    }
                }
            }
0

spróbuj tak:


function showDirTree($arr_dirs) {
// w pętli for

if (is_array($wartosc)) showDirTree($wartosc)
else echo "$klucz - $wartosc";

}

0

dzieki za pomoc:)
no tak - ale chcialbym wlasnie tutaj zrobic cos takiego zeby przed nazwami kluczy wypisywane byly myslniki: np.

-przyroda
-sport
--koszykowka
---nba
---ekstraklasa
--pilka nozna
0

O ile dobrze zrozumiałem, funkcji zawsze przekazywana jest tablica asocjacyjna. Dla każdego elementu wyświetlamy jego nazwę poprzedzoną odpowiednią liczbą myślników (plus przejście do nowej linii). Jeśli zaś wartość elementu jest tablicą, to wyświetlamy ją rekurencyjnie.

No to jakoś tak (uwaga: piszę na sucho, bez interpretera PHP pod ręką, mogą być małe błędy):

function showDirTree($tree, $indent = '') {
  // w $indent jest aktualne wcięcie (w postaci myślników)
  // w $subindent przygotowujemy zawczasu wcięcie dla podelementów
  // -- robimy to poza pętlą, żeby działało trochę szybciej
  $subindent = $indent . '-';
  foreach ($tree as $name => $subtree) {
    echo $indent . $name . '<br>';
    if (is_array($subtree)) {
      showDirTree($subtree, $subindent);
    }
  }
}

Użycie:

showDirTree($galleryDir);

1 użytkowników online, w tym zalogowanych: 0, gości: 1