Verschachteltes Array aus Nested Sets

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

  • Verschachteltes Array aus Nested Sets

    Hallo,

    ich komme einfachnicht weiter. Ziel ist ein verschachteltes Array, das aus einer Nested Sets Anordnung gebildet wird.

    So sähe der Baum optisch aus:
    PHP-Code:
    Lebewesen
    |
    `
    -- Säugetiere
    |   |
    |   
    `-- Primaten
    |   |   |
    |   |   `
    -- Halbaffen
    |   |   |
    |   |   
    `-- Affen
    |   |
    |   `
    -- Nagetiere
    |
    `-- Menschen
        
    |
        `
    -- Asiaten
        |
        
    `-- Afrikaner 
    Die Abfrage liefert, wie nachfolgend sortiert, diese Werte:
    PHP-Code:
    id  name        level  kinder  davor  danach
    ============================================
     
    7  Lebewesen    0     8       0      0
    10  Säugetiere   1     4       1      0
     2  Primaten     2     2       1      0
     8  Halbaffen    3     0       1      0
     4  Affen        3     0       0      1
    33  Nagetiere    2     0       0      1
    52  Menschen     1     2       0      1
    22  Asiaten      2     0       1      0
    26  Afrikaner    2     0       0      1 
    "davor sagt, ob der Eintrag ein Elternelement hat, "danach" sagt ob der Eintrag Kinder hat.

    Wie kann man nun anhand dieser Werte ein verschachteltes Array bauen mit der ID als Key?
    PHP-Code:
    Array
    (
      [
    7] => Array
        (
          [
    id] => 7
          
    [name] => Lebewesen
          
    [child] => Array
            (
              [
    10] => Array
                (
                  [
    id] => 10
                  
    [name] => Säugetiere
                  
    [child] => Array
                    (
                      ...
                    )
                )
              [
    52] => Array
                (
                  [
    id] => 52
                  
    [name] => Menschen
                  
    [child] => Array
                    (
                      [
    22] => Array
                        (
                          [
    id] => 22
                          
    [name] => Asiaten
                        
    )
                      [
    26] => Array
                        (
                          [
    id] => 26
                          
    [name] => Afrikaner
                        
    )
                    )
                )
            )
        )

    Gruß,
    Peter

  • #2
    Und wie soll aus deiner Anfrage ersichtlich sein, welches Element welchem untergeordnet ist?
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Hier steht der Level, die Reihenfolge der Ausgabe entspricht der Baumstruktur.
      PHP-Code:
      id  name        level
      =====================
       
      7  Lebewesen    0
      10  Säugetiere      1
       2  Primaten         2
       8  Halbaffen          3
       4  Affen              3
      33  Nagetiere        2
      52  Menschen       1
      22  Asiaten          2
      26  Afrikaner        2 
      Da es sich um Nested Sets handelt habe ich ja keinen direkten Bezug zum Elternelement in Form einer Eltern-ID.
      Zuletzt geändert von Screw Driver; 27.04.2008, 21:00.
      Gruß,
      Peter

      Kommentar


      • #4
        Würde es denn was bringen, wenn man noch die Parent-ID hätte? Wie macht man das dann?
        Gruß,
        Peter

        Kommentar


        • #5
          PHP-Code:
          getchildren($parent){
           
          $a = Array();
           foreach(
          $children as $child){ /* <-- $children muss du natürlich erst 
          festlegen mit allen, die $parent als parent_id haben. eine Ebenen_id 
          (level) oder ein davor und danach brauchst du nicht, nur das Elternelement */
            
          $a[$parent] = haschildren($child) ? getchildren($child) : $child;
           }
           return 
          $a

          $tree 
          getchildren(-1); //<-- höchste Ebene ist 0, alle dieser Ebene haben parent_id -1

          Zuletzt geändert von jmc; 28.04.2008, 12:35.

          Kommentar


          • #6
            Wie kann man nun anhand dieser Werte ein verschachteltes Array bauen mit der ID als Key?
            So was in der Art? http://tobisworld.ch/misc/test/tree_test.php
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar

            Lädt...
            X