递归 加引用 实现tree 和 无限级菜单

发布时间:2016-12-9 17:48:43 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"递归 加引用 实现tree 和 无限级菜单",主要涉及到递归 加引用 实现tree 和 无限级菜单方面的内容,对于递归 加引用 实现tree 和 无限级菜单感兴趣的同学可以参考一下。

<?php class k_model_menu_menu {     private $data = array();     private $rdata = array();     private $jdata = array();     private $level = 0;     private $paret = array();     function getOption($type= 'part',$pid = 0)     {         if($type = 'all') $this->data= R::getAll( 'select * from menu' );                  $this->teamData();                  if($this->rdata) return $this->rdata;         return false;         }          function addMenu($data){         foreach($data as $key =>$value){             if($value == '请填写内容!') $data[$key]='';         }         if($data){             $menu = R::dispense('menu');             $menu->pid = $data['pid'];             $menu->name = $data['name'];             $menu->url = $data['url'];             $menu->icon = $data['icon'];             $id = R::store($menu);             return $id;         }     }     //返回json 字符串     public function getJsonMenu(){         $data = $this->getChild(1);         $this->jdata = $data;         $this->recursive($this->jdata);         return  json_encode($this->jdata);     }              //递归函数  实现不断的生成子节点,用了引用,感觉这引用是如来神笔,要不然实现太复杂了     public function recursive(&$data = array()){         foreach($data as $key =>$value){             $data[$key]['children']= $this->getChild($value['id']);             $tmp = &$data[$key]['children'];             if($tmp){                 $this->recursive($tmp);             }         }     }          //组织数据,用于生成树形的select 返回的是一个数组     //数组的形式是         public function teamData($pid=1){             foreach ($this->data as $key => $value) {                     if($value['pid']==$pid){                         $this->level++;                         array_push($this->rdata, array('name'=>$value['name'],'level'=>$this->level,'id'=>$value['id']));                                                      $tmpdata = $this->teamData($value['id']);                     if(!$tmpdata){                         $this->level--;                         continue;                     }                 }             }             }                   //根据pid拿取下面的子数据     public function getChild($pid){          $data=  R::getAll( "select * from menu where pid = {$pid}" );          $tmpdata = array();          if($data){              foreach ($data as $key => $value) {                  $tmpdata[$key]['id'] =  $value['id'];                  $tmpdata[$key]['icon'] =  $value['icon'];                  $tmpdata[$key]['text'] =  $value['name'];                  $tmpdata[$key]['url'] =  $value['url'];                  $tmpdata[$key]['children'] =  array();              }          }          return $tmpdata;     }           }

上一篇:第一章总结
下一篇:LeetCode:Longest Valid Parentheses

相关文章

相关评论