一、数据表
category_id int 分类编号(自增)
name varchar(50) 分类名
parent_id int 父级编号,根目录的父级编号是0(默认0)
二、读取树
category_id int 分类编号(自增)
name varchar(50) 分类名
parent_id int 父级编号,根目录的父级编号是0(默认0)
二、读取树
/**
* 获取分类目录树
*
* @param int $pid 父级编号
* @return array 目录树,parent父级分类,child子分类,level当前分类级别
*/
function getCategoryTree($pid = 0, $level = 0){
$sql = "select * from category where parent_id={$pid}";
$data = getData($sql);
//目录树
$tree = array();
//层级
$level++;
if(!empty($data)){
foreach ($data as $v){
$child = getCategoryTree($v['category_id'], $level);
$tree[] = array('parent' => $v, 'child' => $child, 'level' => $level);
}
}
return $tree;
}
三、遍历树
/**
* 遍历树
*/
function eachCategoryTree($data = null){
if($data === null) $data = getCategoryTree(0);
//目录树
static $tree = array();
if(!empty($data)){
foreach ($data as $v){
$parent = $v['parent'];
$child = $v['child'];
$tree[] = array(
'category_id' => $parent['category_id'],
'name' => str_repeat('—', ($v['level']-1)) . $parent['name']
);
eachCategoryTree($child);
}
}
return array('data' => $tree, 'count' => count($tree));
}
四:获取树顺序的数组
/**
* 获取模块树
*
* @param int $parentID 上级模块编号
* @return array
*/
public function getModuleTree($parentID = 0, $level = 0){
$where = " parent_id={$parentID} ";
$data = $this->getData($where, 1, PHP_INT_MAX);
static $tree = array();
$level++;
if(!empty($data)){
foreach ($data as $value){
$value['name'] = str_repeat('—', $level - 1) . $value['name'];
$tree[] = $value;
$this->getModuleTree($value['id'], $level);
}
}
return $tree;
}