ホームページ > バックエンド開発 > PHPチュートリアル > 参照を再帰的に追加してツリーと無限メニューを実装する_PHP チュートリアル

参照を再帰的に追加してツリーと無限メニューを実装する_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:21:45
オリジナル
1259 人が閲覧しました

クラスk_model_menu_menu

{
private $data = array();
private $rdata = array();
private $jdata = array();
プライベート $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;
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);
$id を返す;
}
}
//json 文字串を返します
パブリック関数 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);
}
}
}
// 組データ、形を生成するために返される選択は 1 つの数組です
//数组の形式です
パブリック関数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--;
続ける;
}
}
}
}
//ベースpid拿取下面の子データ
パブリック関数 getChild($pid){
$data= R::getAll( "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();
}
}
$tmpdata を返す;
}
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477141.html技術記事 ?php class k_model_menu_menu { private $data = array();プライベート $rdata = array();プライベート $jdata = array();プライベート $レベル = 0;プライベート $paret = array(); function getOption($type= p...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート