Ich habe folgende funktion erstellt. Sie nutzt einige
dynamische variablen, für den increment in den ebenen..
Beispiel
$ebene = 99;
${i_$ebene};
Ausgabe Neue Variable == $i_99
Ich bräuchte nun variable arrays. Zur zeit muß ich das ganze noch mit einer switch-case anweisung realisieren,
was aber natürlich den sinn einer rekursiven funktion völlig aushebelt. Wie kann ich auf diese switch-case anweisung verzichten?
Wichtig ist, das es nur das array navigation zurückgegeben werden darf, in dem alle daten zur verfügung stehen.
Hier die funktion (Nur aufruf aus der datenbank)
Andreas [sYn]
www.syntheme.de
dynamische variablen, für den increment in den ebenen..
Beispiel
$ebene = 99;
${i_$ebene};
Ausgabe Neue Variable == $i_99
Ich bräuchte nun variable arrays. Zur zeit muß ich das ganze noch mit einer switch-case anweisung realisieren,
was aber natürlich den sinn einer rekursiven funktion völlig aushebelt. Wie kann ich auf diese switch-case anweisung verzichten?
Wichtig ist, das es nur das array navigation zurückgegeben werden darf, in dem alle daten zur verfügung stehen.
Hier die funktion (Nur aufruf aus der datenbank)
PHP-Code:
function createTree($father,$ebene)
{
global $handle;
global $navigation;
global $i;
global $i_0;
global $i_1;
global $i_2;
global $i_3;
if (empty(${"i_$ebene"}))
{
${"i_$ebene"} = 0;
}
$sql = " select c2m_id, description from c2m where father=".$father." order by description";
$katStmt = db_query($sql);
while ($katRueck = db_fetch_array($katStmt))
{
//printf ("Ebene $ebene - %02s ", ${"i_$ebene"});z
switch ($ebene)
{
case 0:
$navigation[$i_0]["id"] = $katRueck[0];
$navigation[$i_0]["info"] = $katRueck[1];
break;
case 1:
$navigation[$i_0][$i_1]["id"] = $katRueck[0];
$navigation[$i_0][$i_1]["info"] = $katRueck[1];
break;
case 2:
$navigation[$i_0][$i_1][$i_2]["id"] = $katRueck[0];
$navigation[$i_0][$i_1][$i_2]["info"] = $katRueck[1];
break;
case 3:
$navigation[$i_0][$i_1][$i_2][$i_3]["id"] = $katRueck[0];
$navigation[$i_0][$i_1][$i_2][$i_3]["info"] = $katRueck[1];
break;
}
createTree($katRueck[0],$ebene+1);
$i++;
${"i_$ebene"}++;
$ebeneTemp = $ebene+1;
${"i_$ebeneTemp"} = 0;
}
return $navigation;
}
www.syntheme.de
Kommentar