Hierarchische Baumstruktur abbilden

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

  • Hierarchische Baumstruktur abbilden

    Hallo,

    ich würde gerne eine hierarchische Baumstruktur abbilden. Dieser sollte so ausgegeben werden:
    PHP-Code:
    +-Root
    |-Eintrag 1
    +-Eintrag 2
    | |-Eintrag 2.1
    | +-Eintrag 2.2
    | | |-Eintrag 2.2.1
    | | |-Eintrag 2.2.2
    | | `-Eintrag 2.2.3
    `-Eintrag 2.3
    |-Eintrag 3
    |-Eintrag 4
    +-Eintrag 5
      
    |-Eintrag 5.1
      
    `-Eintrag 5.2 
    Auch mit genau diesen Strichen, diese sind nicht nur in diesem Code-block, sondern sollen auch auf der Seite erscheinen.

    Ich habe bisher eine Abfrage auf die Kategorien gemacht und ein Array erstellt, das korrekt verschachtelt ist und so aussieht:
    PHP-Code:
    Array
    (
      [
    1] => Array
        (
          [
    cid] => 1
          
    [name] => Root
          
    [type] => 0
          
    [status] => 1
          
    [32] => Array
            (
              [
    cid] => 32
              
    [name] => Eintrag 1
              
    [type] => 1
              
    [status] => 1
            
    )

          [
    3] => Array
            (
              [
    cid] => 3
              
    [name] => Eintrag 2
              
    [type] => 1
              
    [status] => 1
              
    [4] => Array
                (
                  [
    cid] => 4
                  
    [name] => Eintrag 2.1
                  
    [type] => 1
                  
    [status] => 1
                
    )
            )
        )

    Jede Kategorie besteht also aus einem weiteren Array, weil ich Daten wie ID, Typ, Status und Name benötige.

    Nun stehe ich aber vor einem Problem. Wie kann ich damit die Baumstruktur ausgeben?
    Gruß,
    Peter

  • #2
    Mit einer rekursiven Funktion, foreach und is_array

    Du prüfst einfach ob das aktuelle Element ein weiteres Array ist und rufst dann die Funktion rekursiv auf, indem du ihr das aktuelle Element (und damit auch die Elemente darunter) übergibst.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Habe es folgendermaßen versucht:

      PHP-Code:
      function createTree($tree$levelString "") {
        foreach(
      $tree as $key => $value) {
          if(
      is_array($value)) {
            if(isset(
      $tree[$key 1])) {
              
      $levelString .= '| ';
            } else {
              
      $levelString .= '  ';
            }
            
      $levelString createTree($value$levelString);
          } else {
            if(
      $key == 0) {
              echo 
      substr($levelString0strlen($levelString)-2).'+-';
            } elseif(
      $key == count($tree) - 1) {
              echo 
      $levelString.'\-';
            } else {
              echo 
      $levelString.'|-';
            }
            echo 
      $value.'<br />';
          }
        }
        return 
      $levelString substr($levelString0strlen($levelString)-2);
      }

      echo 
      "<pre>";createTree($outputArray);echo "</pre>"
      Es gibt zwar den Baum verschachtelt aus, leider aber die Striche nicht. Vor jeder Kategori erscheint ein +-.
      Gruß,
      Peter

      Kommentar

      Lädt...
      X