André Laugks: Navigation in Array abbilden

Beitrag lesen

Upss, eigentlich wollte ich auf die Vorschau klicken.

Hallo!

Ich möchte/muß eine Navigation in einem Array abbilden. Dieses Array möchte ich dann rekursiv durchlaufen. Das funktioniert auch soweit.

---------------------------------><8-------------------------------
<?PHP

$test['1. M'][] = "1 Menü";
$test['1. M']['1.1 M'][] = "1.1 Menü";
$test['1. M']['1.2 M'][] = "1.2 Menü";
$test['1. M']['1.3 M'][] = "1.3 Menü";
$test['1. M']['1.3 M']['1.3.1 M'][] = "1.3.1 Menü";
$test['1. M']['1.3 M']['1.3.2 M'][] = "1.3.2 Menü";
$test['2. M'][] = "2. Menü";

function rek_array($nav_array, $tiefe)
 {
  $tiefe++;
  while(list($key, $array) = each($nav_array))
   {
    if(is_array($array))
     {
      rek_array($array, $tiefe);
     }
     else
      {
       echo "<div style="margin-left:" . (10*$tiefe) . "">" . $array .  " (" . $tiefe . ")</div>\n";
      }
   }
 }

rek_array($test, -1);
?>
---------------------------------><8-------------------------------

Mit dieser Version bin ich nun einigermaßen zufrieden, wenn ich  folgende Array-Ansätze betrachte.

$nav = array(
  array("1. M" => "1. Menü",
  array(
   array("1.1 M" => "1.1 Menü"),
   array("1.2" => "1.1 Menü")
   )
  )
);

$nav = array(
 '1.1 Ebene',
 array('2/1 Ebene',
    '2/2 Ebene',
    array('3/1 Ebene',
       array('4/1 Ebene',
          '4/2 Ebene'
    )
  )
 ),
 '1.2 Ebene',
 array('2/1 Ebene',
    '2/2 Ebene',
    array('3/1 Ebene',
       array('4/1 Ebene',
          '4/2 Ebene'
    )
  )
 ),
);

Ich habe da noch folgenden Ansatz, daß mir aber diese Menüstruktur generiert.

Blumen
Blumen
  Balkonblumen
  Balkonblumen
  Zimmerpflanzen
  Zimmerpflanzen

Das kommt, weil ich in jedem Array zwei Elemente habe. Ich komme aber nicht drauf, wie ich das "abstellen" kann.

------------------------------><8----------------------------------
<?PHP
$nav = array(
     array("titel" => "Blumen", "href" => "blumen.html",
      array("titel" => "Balkonblumen", "href" => "balkonblumen.html"),
      array("titel" => "Zimmerpflanzen", "href" => "zimmerpflanzen.html")
     )
   );

function rek_array($nav_array, $tiefe)
 {
  $tiefe++;
  while(list($key, $array) = each($nav_array))
   {
    if(is_array($array))
     {
      rek_array($array, $tiefe);
     }
     else
      {
       echo "<div style="margin-left:" . (10*$tiefe) . ""><a href="" . $nav_array['href'] . "">" . $nav_array['titel'] .  "</a></div>\n";
      }
   }
 }

rek_array($nav, 0);

?>
----------------------------------><8-------------------------------

Hat jemand schon einmal sowas gemacht und kann mir ein praktischen Ansatz liefern auch wenn er ganz anders ist oder ein paar Tipps auf Lager?

MfG, André Laugks

--
L-Andre @ gmx.de