php 无限级菜单父节点查询所有子节点
无限级菜单父节点查询所有子节点 [代码片段(94行)]
<?php
class Tree{
static public $treeList=array();//
static public $childNode=array();//
//
public function create($data,$pid = 0,$level = 1){
foreach($data as $key => $value){
if($value['pid']==$pid){
$value['level'] = $level;
self::$treeList[] = $value;
unset($data[$key]);
self::create($data,$value['id'],$level+1);
}
}
return self::$treeList;
}
/******************************************************************************/
/**
*
* @param int $tid treeID
*/
public function findChild($tid){
self::$childNode[]=(int)$tid;
$tree=M('Tree');
$map['id']=array('eq',$tid);
$allTree=$tree->field('id,pid')->select(); //tree
self::findArrayNode($tid, $allTree);
return self::$childNode;//
}
/**
*
* @param int $id ID
* @param array $list treeid,pid
*/
public function findArrayNode($id,$list){
foreach ($list as $key => $val){
if ($id==$val['pid']){
self::$childNode[]=(int)$val['id'];
self::findArrayNode($val['id'], $list); //ID
}
}
}
/******************************************************************************/
//findChild()sql,news
public function createSql($arr=array()){
$sql="";
foreach ($arr as $key => $val){
$sql.="tid=$val or ";
}
$sql=trim($sql); //
$sql=trim($sql,'or'); //or
$sql=trim($sql); //
return $sql;
}
/******************************************************************************/
/**
* tidwheresql
* @param int $tid
*/
public function getSql($tid){
return self::createSql(self::findChild($tid));
}
}
/*
import('ORG.Util.Tree');
$list=Tree::create($data);
id pid
1 0
2 0
3 1
4 3
id pid level
1 0 1
3 1 2
4 3 3
2 0 1
*/
?>
//该片段来自于http://outofmemory.cn
精彩图集
精彩文章






