Avatar billede l3kris Nybegynder
15. august 2008 - 16:15 Der er 2 kommentarer og
1 løsning

Multidimensionlet array og foreach

I PHP 5 har jeg følgende kode, som skal gennemgå en mappe med en masse under- og underundermapper (for at lave en treemenu):

<?php
$dirs = dirlist('.');
maketree($dirs);

function dirlist($dir)
{
    foreach(scandir($dir) as $entry)
    {
        if($entry != '.' && $entry != '..')
        {
            $entry  = $dir.'/'.$entry;
            if(is_dir($entry))
            {
                $path = pathinfo($entry);
                $listarray[$path['basename']] = dirlist($entry);
            }
        }
    return($listarray);
    }
}

function maketree(&$dir)
{
    foreach($dir as $treedir => &$treename)
    {
        echo '<div><a href="#">'.$treename.'</a>';   
        if(count($treedir)>0)
        {
            if(is_array($treedir))
            {
                maketree($treedir);
            }
        }
        echo '</div>';
    }
}

?>

dirlist-funktionen fungerer, men det gør maketree ikke. Meningen er, at mapperne skal komme i rækkefølge, og med undermapper placeret under deres overmapper.

Problemet er, at output hele tiden er "Array", og kun for de mapper i roden, som har undermapper. Underundermapperne kommer ikke med.

Da jeg nu har rodet med det her i mange timer, ville det være fedt, om nogen lige kunne brygge den rigtige kode sammen :P Derfor de mange points for noget, som sikkert er nemt for en, der er mere ferm til PHP.
Avatar billede hmortensen Nybegynder
15. august 2008 - 16:46 #1
Hvis du bytter rundt på $treedir og $treename i den her linie, så tror jeg den er der:
foreach($dir as $treedir => &$treename)
Avatar billede l3kris Nybegynder
15. august 2008 - 17:38 #2
Ja, jeg vidste jo godt, at det var simpelt :)
Tak - og hvis du lægger et svar, er der også points ;)
Avatar billede hmortensen Nybegynder
15. august 2008 - 19:06 #3
Det var så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester