遞迴 加引用 實現tree 和 無限級菜單_PHP教程

來源:互聯網
上載者:User
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; } }

http://www.bkjia.com/PHPjc/477141.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477141.htmlTechArticle?php class k_model_menu_menu { private $data = array(); private $rdata = array(); private $jdata = array(); private $level = 0; private $paret = array(); function getOption($type= p...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.