程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 遞歸 加引用 實現tree 和 無限級菜單

遞歸 加引用 實現tree 和 無限級菜單

編輯:關於PHP編程

<?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;     }           }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved