Avatar billede lillebror Nybegynder
26. februar 2006 - 16:17 Der er 1 løsning

Rekursiv funktion der returnerer array

Hej Eksperter,

jeg har en tabel i min mysql database der indeholder nogle grupper, hver gruppe refererer til en "parent" som skal printes over gruppen i menuen. Jeg har dog valgt at benytte mig af smarty, og da jeg gerne vil have smarty til at loope gennem et array med punkterne i, er jeg nødt til at have noget hjælp.

Lige nu virker det ganske fint, idet den kun opererer på 2 niveauer, men hvis jeg gerne vil have det 3. niveau på og med mulighed for så mange niveauer som man ønsker, må jeg nødvendigvis skulle lave en rekursiv funktion, men hvordan laver jeg en funktion der kan det jeg har brug for?

Lige nu ser koden sådan ud:

$nI = 0;
while ($aData = mysql_fetch_array($rResult)) {
    $tmp = array(
        'href' => $aData['href'],
        'descr' => $aData['descr'],
        'id' => $aData['id']
    );
   
    $res1[$nI] = $tmp;
   
    $sQuery2 = "
        SELECT id, href, descr, parentId
        FROM groups
        WHERE parentId=".$aData['id']."
    ";
   
    $nJ = 0;
    $rSubRes = mysql_query($sQuery2);
    while ($aSubs = mysql_fetch_array($rSubRes)) {
        $tmp2 = array(
            'href' => $aSubs['href'],
            'descr' => $aSubs['descr'],
            'parent' => $aSubs['parentId'],
            'id' => $aSubs['id']
        );
       
        $res2[$nI][$nJ++] = $tmp2;
    }
   
    $nI++;
}

Jeg vil gerne have at det ender med, at $res2 er opbygget på følgende måde:

$res2[0][0] = 'Underside på 1. niveau'
$res2[0][1] = 'Underside på 2. niveau'
$res2[0][2] = 'Underside på 3. niveau'
$res2[0][3] = 'Underside på 1. niveau'

$res2[1][0] = 'Underside på 1. niveau'
$res2[1][1] = 'Underside på 1. niveau'
$res2[1][2] = 'Underside på 2. niveau'
$res2[1][3] = 'Underside på 3. niveau'
Avatar billede lillebror Nybegynder
26. februar 2006 - 16:45 #1
Jeg måtte i stedet for funktioner lave mig en klasse, der kunne huske hvor i array'et vi var kommet til, og kombinere det med en rekursiv function i klassen.
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