Ankündigung

Einklappen
Keine Ankündigung bisher.

Kategoriebaum ausgeben

Einklappen

Neue Werbung 2019

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

  • Kategoriebaum ausgeben

    Hallo,

    ich habe ein Array mit Kategorien. Diese Kategorien können auch Parent Kategorien haben.

    Ich bekomme das Array, von einer externen Quelle, mit etwa 1000 Einträgen wie folgt geliefert:

    PHP-Code:
    array(
        
    'Kategorie 2' => array('Name' => 'MeineKategorie2''Parent' => 'Kategorie 1'),
        
    'Kategorie 3' => array('Name' => 'MeineKategorie3''Parent' => 'Kategorie 1'),
        
    'Kategorie 4' => array('Name' => 'MeineKategorie4''Parent' => 'Kategorie 2'),
        
    'Kategorie 5' => array('Name' => 'MeineKategorie5''Parent' => 'Kategorie 4'),
        
    'Kategorie 6' => array('Name' => 'MeineKategorie6''Parent' => 'Kategorie 5'),
        
    'Kategorie 7' => array('Name' => 'MeineKategorie7''Parent' => 'Kategorie 2'),
        
    'Kategorie 8' => array('Name' => 'MeineKategorie8''Parent' => 'Kategorie 5'),
        ); 
    Nun möchte ich gerne eine Art Kategorie Baum ausgeben:

    Code:
    Kategorie 2
    	=> Kategorie 4
    		=> Kategorie 5
    			=> Kategorie 6
    			=> Kategorie 8
    	=> Kategorie 7
    Kategorie 3
    Irgendwie habe ich eine denkblockade und komme einfach auf keine Lösung wie ich das am einfachsten hinbekomme
    Hat jemand eine Idee?

    Mfg Levo


  • #2
    hi,

    also das array ist aber für die ausgabe die du da beschreibst falsch aufgebaut?

    sonst:

    PHP-Code:
    function ausgabe($item$key) {
        echo 
    "$key - $item\n";
    }

    array_walk_recursive($arr'ausgabe'); 

    Kommentar


    • #3
      Also ich habe das Array jetzt so umgestellt bekommen:

      PHP-Code:
      Array
      (
          [
      Kategorie 2] => Array
              (
                  [
      name] => MeineKategorie2
                  
      [childs] => Array
                      (
                          [
      Kategorie 4] => Array
                              (
                                  [
      name] => MeineKategorie4
                                  
      [childs] => Array
                                      (
                                          [
      Kategorie 5] => Array
                                              (
                                                  [
      name] => MeineKategorie5
                                                  
      [childs] => Array
                                                      (
                                                          [
      Kategorie 6] => Array
                                                              (
                                                                  [
      name] => MeineKategorie6
                                                              
      )

                                                          [
      Kategorie 8] => Array
                                                              (
                                                                  [
      name] => MeineKategorie8
                                                              
      )
                                                      )
                                              )
                                      )
                              )
                          [
      Kategorie 7] => Array
                              (
                                  [
      name] => MeineKategorie7
                              
      )
                      )
              )
          [
      Kategorie 3] => Array
              (
                  [
      name] => MeineKategorie3
              
      )

      Mit array_walk_recursive(); bekommen ich das ganze nun auch untereinander aufgelistet.
      Aber ich scheitere jetzt dabei eine Liste zu erstellen:

      Code:
      <ul>
      	<li>
      		MeineKategorie2
      		<ul>
      			<li>
      				MeineKategorie4
      				<ul>
      					<li>
      					MeineKategorie5
      						<ul>
      							<li>MeineKategorie6</li>
      							<li>MeineKategorie8</li>
      						</ul>
      					</li>
      				</ul>
      			</li>
      			<li>
      				MeineKategorie7
      			</li>
      		</ul>
      	</li>
      	<li>
      		MeineKategorie3
      	</li>
      </ul>

      Kommentar


      • #4
        Zeig doch mal den Code bzw. hast du ja eine Liste, was möchtest du anders?

        Kommentar


        • #5
          Das waren nur ein paar Beispiel Kategorien.

          Insgesamt gibt es, mit allen Unterkategorien, ca. 1000.
          Und diese Liste dann händisch zu erstellen ist mir doch ein bisschen viel Arbeit :P

          Das muss doch irgendwie mit dem array_walk_recursive() gehen?
          Aber irgendwie bekomme ich das nicht gebacken.

          Kommentar


          • #6
            Muss es unbedingt mit array_walk_recursive sein?

            Und wie stellst du fest, ob etwas die einfachste Lösung ist? Also, wie definierst du das und warum?

            Finde die Einschränkungen etwas willkürlich.

            Kommentar


            • #7
              Also ich habe das jetzt anders gelöst.
              Ich gebe einfach erstmal nur alle Hauptkategorien aus. Beim klick auf eine Hauptkategorie lade ich dann die nächsten Unterkategorien dieser Kategorie per Ajax und hänge diese als Liste an die Kategorie. Das geht dann so auch für alle weiteren Unterkategorien weiter.

              Das war für mich jetzt mal die einfachste Lösung
              Ist zwar nicht ganz so wie ich es wollte, aber es erfüllt den Zweck.

              Kommentar


              • #8
                Falls es dir nur darum gehen sollte, einfach eine ul/li-Struktur zu generieren, schau etwa mal hier: http://phpforum.de/forum/showthread.php?t=238773

                Ich habe ehrlich gesagt nicht verstanden, was deine genaue Frage ist. Das einfach irgendwie zu machen, ist ja jetzt nicht so wahnsinnig anspruchsvoll und hätte sich mit Sicherheit auch per Suche finden lassen, weil das mehr oder weniger der Klassiker für Beispiele von Rekursion ist.

                Kommentar

                Lädt...
                X