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
Comment