PHP中的数组的多级菜单

时间:2016-02-20 17:58:10

标签: php arrays

我试图用PHP中的数组创建一个菜单。

我想让它更具可读性,所以我使用了一个数组。

我的数组如下:

$menu = array(
   'calendar' => array(
      'text'   => 'Calendar',
      'rights' => 'user'
   ),
   'customers' => array(
      'text'   => 'Customers',
      'rights' => 'user',
      'sub' => array(
         'create-new' => array(
            'text'   => 'Create new customer',
            'rights' => 'user'
         ),
         'show-customers' => array(
            'text'   => 'Show all customers',
            'rights' => 'user'
         )
      )
   )
);

用PHP来解析数组:

buildMenu($menu);

function buildMenu($menu_array, $is_sub=FALSE) {

   $attr = (!$is_sub) ? ' id="menu"' : ' class="submenu"';
   $menu = "<ul".$attr.">";

   foreach($menu_array as $id => $properties) {
      foreach($properties as $key => $val) {
         if(is_array($val)) {
            $sub = buildMenu($val, TRUE);
         }
         else {
            $sub = NULL;
            $$key = $val;
         }
      }
      if(!isset($url)) {
         $url = $id;
      }
      $menu .= "<li><a href=".$url.">".$text."</a>".$sub."</li>";
      unset($url, $text, $sub);
   }

   return $menu . "</ul>";
}

我错过了什么吗?

它不会回应我任何事情。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

只是返回不会提供你需要使用下面的代码,内部函数。

 echo $menu . "</ul>";

而不是

return $menu . "</ul>";

如果您返回html输出,请使用以下代码。

echo $output = buildMenu($menu); 

而不是

buildMenu($menu);