无级分类

<?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);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值