php之菜单栏用递归显示

来源:互联网 发布:手机淘宝5.8.0旧版本 编辑:程序博客网 时间:2024/06/01 22:46

之前做的菜单只是最多三级菜单,现在想实现多级菜单,并且添加菜单之后,立马显示出来,

如果想实现其中有一个方法是递归,通过递归把菜单遍历出来,但是如果想显示在html页面中就需要整合了。

 <?php
                function arr_foreach($tree)
                {
                    $html = '';
                    foreach($tree as $v)
                    {
                        if($v['sub'] == '')
                        {
                            $html .= "<li ";
                            $html .= ($_SESSION['m_name'] == $v['m_name'])? 'class="active"':'';
                            $html .= ">";
                            $html .="<a href='{$v["m_url"]}'>";
                            $html .= "<i class='{$v["m_remark"]}'>";
                            $html .=$v['m_title'].'12121';
                            $html .= "</i>";
                            $html .= "</a>";
                            $html .= "<b class='arrow'></b>";
                            $html .= "</li>";
                        }
                        else
                        {
                            $html .= "<li ";
                            $html .= ($_SESSION['m_name'] == $v['m_name']) ? 'class="active"' : '';
                            $html .= ">";
                            $html .= "<a href='{$v["m_url"]}' class='dropdown-toggle'>";
                            $html .= "<i class='{$v["m_remark"]}'>";
                            $html .= "<span class='menu-text'>";
                            $html .= $v['m_title'];
                            $html .= "</span>";
                            $html .= "<b class='arrow fa fa-angle-down'></b>";
                            $html .= "</i>";
                            $html .= "</a>";
                            $html .= arr_foreach($v['sub']);
                            $html = $html . "</li>";


                        }
                    }
                    return $html ? '<ul class="submenu">'.$html.'</ul>' : $html ;
                }
                echo arr_foreach(unserialize($_SESSION['menu']));//从控制器获取得到的菜单数组,再反序列话出来。
            ?>

闲聊:说实在的我之前不明白为什么还要序列化再反序列化,serialize()把变量和他们的值编码成文本形式,unserialize()回复原先变量。

serialize()有利于存储或传递PHP值,同时不丢失其类型和结构。这个在cms(内容管理系统)经常可以看到。

0 0