Multidimensionales Array auslesen und bearbeiten

  • Themenstarter Themenstarter Tangotänzerin
  • Beginndatum Beginndatum
T

Tangotänzerin

Hej liebe Leute im Forum,

bin nahezu am verzweifeln, da mir tiefergehende PHP-Kenntnisse fehlen. Vielleicht könnte Ihr helfen, da selbst die Literatur hierfür keine Praxistipps bereit hält. Es geht um folgendes:
Ich möchte das nachfolgende multidimensionale Array auslesen, um eine Liste in html zu erstellen (Navigation). Für die Schlüssel des Arrays gelingt mir auch, aber wenn ich bei den SubMenus angelange, fängt das große Scheitern an. Es gelingt mir leider nicht die hierfür erforderlichen Schleifen oder auch rekursive Funktion zu erstellen.
Besten Dank für Hilfe und Grüße

$menu = array (
array (
'url' => '/index.htm',
'text' => 'Home',
'class' => 'home'
),

array (
'url' => '/wir.htm',
'text' => 'wir über uns',
'class' => 'wir'
),
array (
'url' => '/kinder.htm',
'text' => 'Kinder',
'class' => 'kinder',
'subMenu' => array (
array (
'url' => '/kinder-training.htm',
'text' => 'Kinder Training',
),
array (
'url' => '/kinder-betreuung.htm',
'text' => 'Kinder Betreuung',
),
)
),
array (
'url' => '/eltern.htm',
'text' => 'Tips für Eltern',
'class' => 'eltern'
),
array (
'url' => '/sport-angebote.htm',
'text' => 'Sportangebote',
'class' => 'sportangebote',
'subMenu' => array (
array (
'url' => '/volleyball.htm',
'text' => 'Volleyball',
),
array (
'url' => '/trainer-team.htm',
'text' => 'Trainer Team',
'subMenu' => array (
array (
'url' => '/lisa.htm',
'text' => 'Lisa'
),
array (
'url' => '/ellen.htm',
'text' => 'Ellen'
),
array (
'url' => '/dani.htm',
'text' => 'Dani'
)
)
)
)
),
array (
'url' => '/aktuelles.htm',
'text' => 'Aktuelles',
'class' => 'aktuelles'
),
);
 
Ich denk mal, das es so ganz gut funktioniert:

PHP:
<?php
header("Content-Type: text/html; charset=utf-8");

$menu = array (
    array (
        'url' => '/index.htm',
        'text' => 'Home',
        'class' => 'home'
    ),

    array (
        'url' => '/wir.htm',
        'text' => 'wir über uns',
        'class' => 'wir'
    ),

    array (
        'url' => '/kinder.htm',
        'text' => 'Kinder',
        'class' => 'kinder',
        'subMenu' => array (
            array (
                'url' => '/kinder-training.htm',
                'text' => 'Kinder Training',
            ),
            array (
                'url' => '/kinder-betreuung.htm',
                'text' => 'Kinder Betreuung',
            ),
      )
  ),
  
    array (
        'url' => '/eltern.htm',
        'text' => 'Tips für Eltern',
        'class' => 'eltern'
    ),
    
  array (
        'url' => '/sport-angebote.htm',
        'text' => 'Sportangebote',
        'class' => 'sportangebote',
        'subMenu' => array (
            array (
            'url' => '/volleyball.htm',
            'text' => 'Volleyball',
            ),
            array (
                'url' => '/trainer-team.htm',
                'text' => 'Trainer Team',
                'subMenu' => array (
                    array (
                        'url' => '/lisa.htm',
                        'text' => 'Lisa'
                    ),
                    array (
                        'url' => '/ellen.htm',
                        'text' => 'Ellen'
                    ),
                    array (
                        'url' => '/dani.htm',
                        'text' => 'Dani'
                    )
        )
      )
    )
  ),
  
    array (
        'url' => '/aktuelles.htm',
        'text' => 'Aktuelles',
        'class' => 'aktuelles'
    ),
);

function recursiveMenu($menu)
{
    $res = '<ul>';
    
    foreach($menu as $entry)
    {
        $res .= '<li>';
        $res .= '<a href="' . $entry['url'] . '"'. 
          (isset($entry['class']) ? ' class="'.$entry['class'].'"' : '') . '>' . $entry['text'] . '</a>';
        
        if(isset($entry['subMenu']))
          $res .= recursiveMenu($entry['subMenu']);
          
        $res .= '</li>';
    }
    
    $res.= '</ul>';
    
    return $res;
}

echo recursiveMenu($menu);
?>
 
Hej, danke für Deine Antwort, aber ich bekomme leider folgende Fehlermeldung:
Parse error: syntax error, unexpected '=' in ...\tmp\prev1~.php on line 105 !
 
noch mal Hej,
habe Deinen Ansatz überarbeitet. Genial, denn Deine Vorgaben funktionieren! Danke
 
Probiere mal ein += statt dem .= zu setzen ;)
EDIT: Lol schon gelöst ;) Hoffe es half trotzdem... Wäre jetzt noch nett wenn du uns sagen würdest, was du überarbeitet hast ;)
Hoffe ich konnte helfen,
Daniel
 
Oh, sorry :D
War vorher im C++ Forum und bei C++ geht es so...
Bei Php müsste es aber auch gehen... Ist aber besser mit einem Punkt ;)
Wie sagt man so schön: "Probieren geht über studieren ;)".
 
Aso dann geht es nicht mit strings...
Sorry bin jetzt grad irgendwie verwirrt weil das ja in C++ alles so geht .... :confused: und PHP stark an C++ angelehnt ist...
So habs getestet... Es zählt Zahlen zusammen.. Da aber beides Strings sind werden sie als 0 gewertet und es wird 0 ausgegeben ;)
Okay.. Wieder was dazugelernt ;)
 
Zuletzt bearbeitet:
Ist zwar OT, aber dennoch: C++-Strings kennen den Operator +=, PHP nicht. Bei PHP ist einiges anders wie in C bzw. C++. Da PHP untypisiert ist, wird an dieser Stelle natürlich eine arithmetische Additionsoperation versucht. Da aber keine Ziffern in den einzelnen Variablen sondern Characters stehen, wird 0 mit 0 addiert, was 0 ergibt. ;-)
 
Zurück