Mehrdimensionales Array umsortieren

DrBonsai

Mitglied
Hallo,
ich versuche ein verschachteltes Menü aus einer Datenbank zu generieren.

Ich habe dafür ein zweidimensionales Array in der Form $side_navigation[$parent_id][$id].
Das soll nun natürlich als Liste ausgegeben werden. Dazu muss ich prüfen, ob eine ID als parent_id vorhanden ist und alle children unter dieser ID anlegen.

Mein Array sieht so aus:
PHP:
array
  3 => 
    array
      0 => string '19' (length=2)
      1 => string '23' (length=2)
      2 => string '20' (length=2)
      3 => string '22' (length=2)
      4 => string '21' (length=2)
  1 => 
    array
      0 => string '4' (length=1)
      1 => string '3' (length=1)
  0 => 
    array
      0 => string '1' (length=1)
      1 => string '2' (length=1)
      2 => string '10' (length=2)
      3 => string '7' (length=1)
      4 => string '14' (length=2)
      5 => string '8' (length=1)
      6 => string '11' (length=2)
      7 => string '13' (length=2)
      8 => string '15' (length=2)
      9 => string '9' (length=1)
      10 => string '18' (length=2)
      11 => string '12' (length=2)
      12 => string '17' (length=2)
      13 => string '16' (length=2)

Ausgegeben werden soll am Ende sowas:
PHP:
array


  0 => 
    array
      0 => string '1' (length=1)
      0.5 => 
            array
               0 => string '4' (length=1)
               1 => string '3' (length=1)
               1.5 => 
                    array
                    0 => string '19' (length=2)
                    1 => string '23' (length=2)
                    2 => string '20' (length=2)
                    3 => string '22' (length=2)
                    4 => string '21' (length=2)
      1 => string '2' (length=1)
      2 => string '10' (length=2)
      3 => string '7' (length=1)
      4 => string '14' (length=2)
      5 => string '8' (length=1)
      6 => string '11' (length=2)
      7 => string '13' (length=2)
      8 => string '15' (length=2)
      9 => string '9' (length=1)
      10 => string '18' (length=2)
      11 => string '12' (length=2)
      12 => string '17' (length=2)
      13 => string '16' (length=2)

Im Grunde müsste also eine Schleife so etwas machen:
PHP:
foreach($side_navigation as $parent_id => $ids)
	{
	foreach($ids as $key => $id)
		{
		if(isset($side_navigation[$id])) /*Wenn die aktuelle ID als Parent vorhanden ist...*/
			{
			$array_id[$parent_id][$key] = $array_id[$id];
 			}
		 }
	} 
print_r($array_id[0][0]);

Problem: So ersetze ich meine Parents komplett. Hat jemand eine Idee, wie ich die Parents erhalten kann?
Vllt auch einen ganz anderen Ansatz?

Vielen Dank!
mfg,
David
 
Hi,

magst du nochmal ein wenig genauer formulieren, wie du auf deine Beziehung zwischen parent und id kommst?

Unter umständen wäre es auch gut, wenn du mal die Tabelle aufmalen könntest, aus der du das erste Array aufbaust. Eventuell kann man da direkt schon was draus machen.

LG Nino
 
Hi zusammen,

@Nino 14
die Beziehungen zu den Ids sind folgendermaßen: Der key in der ersten Array-Dimension ist die parent-id des darunter liegendan Arrays.
Die Tabellenstruktur ist folgendermaßen:
HTML:
I id I parent_id I level I category_de I url_de I
+----+-----------+-------+-------------+--------+
I  1 +     0     I   1   I  Brot...    I  brot  I
+----+-----------+-------+-------------+--------+
I  2 I     0     I   1   I    xxx      I   xxx  I
+----+-----------+-------+-------------+--------+
I  3 I     1     I   2   I    xxx      I   xxx  I
+----+-----------+-------+-------------+--------+
I ...
@Yaslaw:

Deine Klasse schau ich mir dann mal an.
Vielen Dank schonmal bis hier.

mfg,
David
 

Neue Beiträge

Zurück