【问题标题】:adding a parents parameter to a recursive element将父母参数添加到递归元素
【发布时间】:2014-06-03 09:10:50
【问题描述】:

我正在构建一个菜单,并且我需要在我生成的子项上使用父键

函数如下所示:

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>

【问题讨论】:

    标签: php recursion hyperlink generator


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 2021-01-23
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多