<?php
class My_Lib_CCategory{
var $data;
function __construct($arr){
$this->assign($arr);
}
function assign($arr){
$count = count($arr);
foreach($arr as $key=>$value){
for($i=$key+1;$i<$count;$i++){
if( $arr[$key]['_order'] > $arr[$i]['_order']){
$li = $arr[$i];
$arr[$i] = $arr[$key];
$arr[$key] = $li;
}
}
}
$this->data = $arr;
}
#*******************************************************
# 获得所有子节点
#*******************************************************
function getChildren($id = 0){
$data = $this->getTreeList($id);
return $data;
}
function getTreeList($id = 0,$depath = 0,&$tdata = array()){
$arr = $this->data;
foreach($arr as $v){
if($v['pid'] == $id){
$v['depath'] = $depath;
$tdata[] = $v;
$this->getTreeList($v['id'],$depath+1,$tdata);
}
}
return $tdata;
}
#******************************************
# 获得父节点
#******************************************
function getParent($id){
$arr = $this->data;
foreach ($arr as $v) {
if ($v['id'] == $id) return $this->getNode($v['pid']);
}
}
#*************************************
# 获得节点信息
#*************************************
function getNode($id){
$arr = $this->data;
foreach($arr as $v){
if($v['id'] == $id) return $v;
}
}
#****************************************
# 获得全部父节点
#****************************************
function getParents($id){
while($rs = $this->getParent($id)){
$data[] = $rs;
$id = $rs['pid'];
}
return $data;
}
}
?>
用法
# ******************************************************
# 功能:查询所有分类
# 参数:$id
# $id:默认为0,如果想查询某个分类下面的字分类,传入$id即可
# 返回:成功后把结果集返回一个二维数组 失败返回false
# ******************************************************
function getList($id = 0){
$sort = new My_Lib_CCategory($this->fetchAll()->toArray());
return $sort->getChildren($id);
}
# ******************************************************
# 功能:删除分类
# 参数:$id 该表的主键 传入一个$id 如果该$id 下面有子分类一起把下面的子分类删掉
# 返回:成功后返回ture 失败返回false
# ******************************************************
function del($id){
$ids = $this->getList($id);
foreach($ids as $k=>$v){
$data[] = $v['id'];
}
$data[] = $id;
$db = $this->getAdapter();
$where = $db->quoteInto("id in (?)", $data);
return $this->delete($where);
}