dedlfix: Baum-Menü Struktur Verwaltungstool

Beitrag lesen

echo $begrüßung;

multidimmensionalen (PHP) Array

Wäre nicht verschachtelt anstatt multidimensional ein passenderer Ausdruck?

Ich zitiere mal etwas aus dem gegebenene Link:

array (
        href  => "firma/",
        text  => "FIRMA",
        title => "Wer ist FIRMA?",

array (
            href  => "firma/",
            text  => "Wer ist FIRMA",
            title => "",
        ),

array (
            href  => "firma/taetigkeitsbereiche/",
            text  => "Tätigkeitsbereiche",
            title => "",

array (
                href  => "firma/taetigkeitsbereiche/reisen/",
                text  => "Reisen mit firma",
                title => "",

array (
                    href  => "firma/taetigkeitsbereiche/reisen/bla",
                    text  => "Bla Blub",
                    title => "",
                ),
            ),

Ich finde das eine sehr ungünstige Struktur. (Außerdem fehlen '' oder "" jeweils um href, text und title.)
Eigenschaften des jeweiligen Eintrages befinden sind in der gleichen Ebene wie die Kinder. Es wird umständlich werden, über die Kinder zu "foreachen", da jedesmal auf die Eigenschaften des Menüeintrages geprüft werden muss, um diese zu ignorieren.

Mein Vorschlag für ein Element wäre:

$menu = array(  
  array( // ein Menüelement  
    'href' => 'foo',  
    'text' => 'bar',  
    'title' => 'foobar',  
    'children' => array( // ein Array für alle Kinder  
      array( // ein Kind  
        'href' => ...,  
        ...  
        'children' => array(...)  
      ),  
      array( // noch ein Kind  
        'href' => ...,  
        ...  
        'children' => array() // für keine Kinder sollte _immer_ ein leeres Array angelegt werden  
      ),  
    ),  
  array(...)  // noch ein Menüelement  
  ...  
);

Kinder werden so hinzugefügt:

$menuitem['children'][] = array('href' => ..., ..., 'children' => array());

Alle Kinder eines Elements kannst du dann so durchlaufen:

  foreach($menuitem['children'] as $child) {  
    ... = $child['href'];  
    $child['text'] = ...;  
    ...  
  }

foreach beschwert sich, wenn es kein Array übergeben bekommt, deshalb sollte children immer ein Array sein, ohne Kinder dann halt ein leeres.

Du kannst natürlich auch eine Klasse für den Menüeintrag definieren...

echo "$verabschiedung $name";