Kopfnuss: Baumstruktur/Variable Arrays???

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kopfnuss: Baumstruktur/Variable Arrays???

    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)
    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;

    Andreas [sYn]
    www.syntheme.de
    Zuletzt geändert von syn; 20.11.2002, 07:08.
    ....... .:[s|Y|n]:. . .:[www.syntheme.de]:. . .:[:-)]:. .......

  • #2
    vielleicht hilft dir ja das weiter

    http://www.php-resource.de/forum/sho...threadid=12281

    da brauchste auch nur eine SQL Abfrage an deine DB machen
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Hmm,
      auch nicht schlecht, aber leider löst dies mein problem noch nicht.

      Bei dieser klasse muß ich auch vorher wissen, in welche
      dimenson ich einen eintrag mache.
      Was ich wirklich brauche, ist die möglichkeit zu sagen,
      baue ein array mit 3 dimensionen, wenn du in der dritten level bist.
      In der ersten level halt nur eine dimension.

      Da muß es doch eine möglichkeit geben.....hilfe.....
      ....... .:[s|Y|n]:. . .:[www.syntheme.de]:. . .:[:-)]:. .......

      Kommentar


      • #4
        in welche Dimension/Level der Eintrag erfolgt entscheidet die
        Klasse selber. Du mußt nur beim Anhängen angeben, welchen
        Parent das jetzt anzuhängende Element hat.

        Wo das Element dann genau hingehört, ermittelt die Klasse selber

        bei dir dürfte das dann so funzen
        PHP-Code:
        $sql " select c2m_id, father, description from c2m order father desc, c2m_id desc";
        $result=mysql_query($sql);
        $tree = new TreeStorage("Menü");
        while(
        $row=mysql_fetch_array($result)){
            
        $tree->add($row['c2m_id'],$row['father'],$row['description']);
        }
        $tree->sort();
        $tree->show(">> ""\n"'$link=\'<a href="datei.php?id=\'.$this->id.\'">\'.$this->name.\'</a>\';'); 
        PS: um den richtigen Code zu bekommen benutz die zitat-Funktion, und kopier ihn dort raus.
        Das board kommt mit den \ wieder mal nicht klar
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar

        Lädt...
        X