PHP中数组的多级菜单

PHP中数组的多级菜单,php,arrays,Php,Arrays,我正在尝试从PHP中的数组创建菜单 我想让它更可读,所以我使用了一个数组 我的数组如下所示: $menu = array( 'calendar' => array( 'text' => 'Calendar', 'rights' => 'user' ), 'customers' => array( 'text' => 'Customers', 'rights' => 'user',

我正在尝试从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>";
}
buildMenu($menu);
函数buildMenu($menu\u数组,$is\u sub=FALSE){
$attr=(!$is_sub)“'id=”菜单“:'class=”子菜单“;
$menu=“”;
foreach($id=>$properties的菜单\数组){
foreach($key=>$val的属性){
if(is_数组($val)){
$sub=buildMenu($val,TRUE);
}
否则{
$sub=NULL;
$$key=$val;
}
}
如果(!isset($url)){
$url=$id;
}
$menu.=“
  • ”“$sub.”
  • ”; 未设置($url、$text、$sub); } 返回$menu。“”; }
    我错过什么了吗

    它跟我没有任何共鸣


    谢谢您的帮助。

    仅返回将不会提供您需要的输出,或者使用下面的代码,函数内部

     echo $menu . "</ul>";
    
    而不是

    buildMenu($menu);
    
    使用echo$output=buildMenu($menu);取而代之的是buildMenu($menu);哇,我的菜单在这里。:)为什么?
    echo $output = buildMenu($menu); 
    
    buildMenu($menu);