2014-04-18 24 views
0

我建立一个菜单,我需要对我产生的子项添加父母参数递归元素

功能看起来像这样父母键:

function get_menu($tagmenu){ 
$menu=""; 
$count=0; 
foreach ($tagmenu as $key => $value) { 
    $is_active=false; 
    $class=""; 
    if(isset($_GET["tagsearch"])){ 
     if($key == $_GET["tagsearch"]){ 
      $is_aktive=true; 
     }; 
    }; 
    $menu.= "<ul>"; 
    $sub=""; 
    if(is_array($value)){ 
     if (count($value)>0) { 
      $sub.= "<div class='submenu'>"; 
      $sub.=get_menu($value); 
      $sub.= "</div>"; 
     } 
    } 

    $li= "<li class='menuitem'><a href='?tagsearch=".$key."'>".$key."</a>"; 

    if (strpos($sub,"'menuitem active'")!==false || $is_active) { 
     $li=str_replace("'menuitem'", "'menuitem active'", $li); 
    } 
    $menu.=$li.$sub; 
    $menu.= "</li>"; 
    $menu.= "</ul>"; 
} 
return $menu; 
} 

这是阵列;

Array(
    [fotografie] => Array(
      [schwarzweiss] => Array(
        [street] => Array() 

      ) 

    ) 

) 

是否有可能在这个结构中添加父数组的所有密钥到链接?

在结束它应该看起来像

<a href="fotografie-schwarzweiss-street"></a> 

回答

0

是的,它是。您需要将第二个参数添加到递归函数中,在该函数中传递当前字符串。

function get_menu($tagmenu, $shortcut = array()) 
{ 
    $menu=""; 
    $count=0; 
    foreach ($tagmenu as $key => $value) 
    { 
     $shortcut[] = $key; 
     $is_active=false; 
     $class=""; 
     if(isset($_GET["tagsearch"])) 
     { 
      if($key == $_GET["tagsearch"]) 
      { 
       $is_aktive=true; 
      }; 
     }; 
     $menu.= "<ul>"; 
     $sub=""; 
     if(is_array($value)) 
     { 
      if (count($value)>0) 
      { 
       $sub.= "<div class='submenu'>"; 
       $sub.=get_menu($value, $shortcut); 
       $sub.= "</div>"; 
      } 
     } 

     $li= "<li class='menuitem'><a href='?tagsearch=".$key."' class=".implode('-', $shortcut).">".$key."</a>"; 

     if (strpos($sub,"'menuitem active'")!==false || $is_active) 
     { 
      $li=str_replace("'menuitem'", "'menuitem active'", $li); 
     } 
     $menu.=$li.$sub; 
     $menu.= "</li>"; 
     $menu.= "</ul>"; 
    } 

    return $menu; 
} 

echo get_menu(
    array(
     'fotografie' => array(
      'schwarzweiss' => array(
       'street' => array() 
      ) 
     ) 
    ) 
); 

你有过的链接已经href属性,所以我用class ATTR向您展示的例子。

演示:http://sandbox.onlinephpfunctions.com/code/184eaa428de75511eda1ffee8f8ad08b82a03919