Tom: Baumstruktur erzeugen

Beitrag lesen

Hello,

Hi,

ich habe ein eindimensionales Array aus Verzeichnis-Pfaden.

$pfade = array(
"Pfad1",
"Pfad2",
"Pfad3/Ebene1",
"Pfad3/Ebene2",
"Pfad3/Ebene3/Ebene1",
"Pfad4/Ebene2",
"Pfad5");

Daraus möchte ich eine Ausgabe als Baumstuktur erzeugen, z.B. so

Pfad1
Pfad2
Pfad3
  Ebene1
  Ebene2
  Ebene3
    Ebene1
Pfad4
  Ebene2
Pfad5

Hat jemand ne Idee wie ich das bewerkstelligen könnte?

Durch Rekursion mit Übergabeparameter bzw. referenzwertweitergabe.
BTW: Deine Begriffswahl ist verkehrt herum.
     Ebene 1 ist üblicherweise näher an der Wurzel, als Ebene 3...

Angenommen, im "Array" mit dem Namen $_baum stehen die Daten

function make_list($_baum, $ebene)
{
  foreach($_baum as $subline_no => $entry)
  {
    if(is_array($enty)
    {
      $list .= make_list($enty, $ebene+1);
    }
    else
    {
      $list .= "<li class="entry"".($ebene % 2)." ebene$ebene">".htmlspecialchars($entry)."</li>\n";
    }

return $list;
  }
}
#----------------------------------------------------

$ebene = 0;

echo make_list($_baum, $ebene);

Ich hoffe, dass ich mich nicht geirrt habe.

Schau Dir das resultierende HTML an.
Der Rest sollte dann über CSS steuerbar sein.

Du brauchst eine Klasse für even und odd und eine für den indent.
Statt des <li> wäre ggf. auch <p> denkbar (bitte nicht schlagen *g*).

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)