MudGuard: Blackout, Baumstruktur, Tree

Beitrag lesen

Hi,

$ar[0] = array('titel_1','0');
$ar[1] = array('titel_2','0');
$ar[2] = array('titel_3','1');
$ar[3] = array('titel_4','0');
$ar[4] = array('titel_5','3');
$ar[5] = array('titel_6','4');

Rauskommen soll also sowas:

titel_1
   titel_3
      titel_5
   titel_2
   titel_4
      titel_6

titel_1, titel_2, titel_4 haben dasselbe übergeordnete Element '0'.

Dein Beispielbaum zeigt titel_1 auf oberster Ebene.
titel_3, titel_2 und titel_4 sind alle unter titel_1, obwohl titel_3 ('1') ein anderes übergeordnetes Element als titel_2 und titel_4 (jeweils '0') hat.

<ul>
<li>Titel_1</li>
  <ul>
   <li>Titel_3</li>
     <ul><li>Titel_5</li></ul>
      <li>Titel_2</li>
      <li>Titel_4</li>
        <ul><li>Titel_6</li></ul>
   </ul>
</ul>

Hier ist jetzt titel_3 einziges Kind von titel_1, titel_2 und titel_4 sind plötzlich Kinder von titel 5?

Wobei die HTML-Struktur so natürlich nicht richtig ist, da ul nur li als Kinder haben darf - die jeweiligen Unterlisten gehören ins li des übergeordneten Elements.

Aus Deinen Beispielen wird also nicht deutlich, wie die auszugebende Struktur aussehen soll, da die beiden gezeigten Bäume überhaupt nicht zum Array passen.

Wo kommt das Array her? Wie wird es erzeugt? Hast Du das selbst in der Hand? Wenn ja, muß es flach sein?
Wenn nein, dann bau es gleich hierarchisch auf.
Wenn flach, würde ich empfehlen, das wie folgt abzuspeichern:

Root-Element
Erstes Kind
Erster Enkel
Erster Urenkel
Zweiter Urenkel
Dritter Urenkel
Zweiter Enkel
Erster Urenkel
Zweiter Urenkel
Zweites Kind
Erster Enkel

usw.
Also zuerst auf jeder Ebene das Element selbst, gefolgt von seinen Kindern (wobei jedem Kind erstmal dessen Kinder folgen, denen wiederum deren Kinder direkt folgen usw.)
So existiert beim Wiederaufbauen des Baums aus dem Array beim Durchgehen von 0 bis n zu Element bereits dessen Vater, so daß das Element sofort dort angehängt werden kann.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.