Avatar billede jakobdo Ekspert
01. december 2005 - 20:19 Der er 1 kommentar og
1 løsning

Rekursiv funktion, bliver variabler ikke starter forfra

Jeg har leget lidt med følgende funktion:

function printForum($fArray, $level)
{
    for($i=0;$i<count($fArray);$i++)
    {
        echo printSpaces($level) . "ID: " . $fArray[$i]['id'] . "<br>";
        if(is_array($fArray[$i]['subforum']))
        {
            printForum($fArray[$i]['subforum'],++$level);
        }
    }
}

Jeg kalder funktionen: printForum($mitArray,0);
$mitArray er et multi-array, og meningen er den skal løbe alle "level" et array igennem med level = 0;
Har et level=0 array et under array, tælles level en op.
Men når der ikke er flere arrays i et under array, hopper den tilbage igen, men level bliver ikke hvor den var!
$level virker som om den er global!
Er det ikke meningen i rekursive funktioner, at selve variablerne i funktionen er lokale for det kald, og ikke hele scriptet?

Nogle som kan guide mig?
Avatar billede jakobdo Ekspert
01. december 2005 - 20:33 #1
Crap...
Det var bare: ++$level som skulle rettes til: $level + 1;
Jeg troede sgu ikke den øgede værdien "globalt" eller hvad man skal kalde det!
Avatar billede barklund Nybegynder
01. december 2005 - 23:43 #2
++ betyder at man lægger 1 til variablen, så variablen er 1 større. Selvfølgelig betyder det lige netop, at variablen bliver ændret og ikke bevarer sin oprindelige værdi. Ellers ville alle løkker med $i++ jo ikke virke, hvis ikke værdien af $i ændrede sig :)
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