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'
