龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP 无限分类,从数据库查询数据 在数组中递归进行自定义排序

时间:2015-03-28 02:26来源:网络整理 作者:网络 点击:
分享到:
无限分类,从数据库查询数据 在数组中递归进行自定义排序 无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家

无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家一起交流 超过100行了。放不全

[PHP]代码

class Tree{
            protected $arr = array();           //排序数组
            protected $info = array();          //存放错误信息
            protected $tree = array();          //存放生成类数组
            protected $flag = true;             //标志位

            public function __construct()
            {

            }   
            //得到数据  
            public function data($fid,$arr)
            {
                $this->checkArr($arr);
                $this->checking();
                $this->chindAll($fid);
                return $this->tree;     
            }

            //判断参数是否符合要求
            protected function checkArr($val)
            {
                static $num = 0;
                if(is_array($val)){
                    foreach($val as $Varr){
                        $this->isKeyVal('id', $Varr, $num);
                        $this->isKeyVal('parentid', $Varr, $num);
                        $this->isKeyVal('name', $Varr, $num);
                        $num++;
                    }
                }
                    $this->arr = $val;
            }
            //存入id是否是数组
            protected function checkNum($val)
            {
                if(!is_numeric($val)){
                    $this->info[] = '传入参数'.$val.'不是数值';
                    $this->flag = false;
                    $this->checking();
                }
            }
            //验证,输出错误信息
            protected function checking(){
                if(!$this->flag){
                    echo '<pre>';
                    var_dump($this->info);
                    exit();
                }
            }

            //判断数组键是否存在,是否有值
            protected function isKeyVal($key, $arr, $num)
            {
                if(!array_key_exists($key, $arr))
                {
                    $this->info[] = $num.'数组键'.$key.'不存在';
                    $this->flag = false;

                }
            }

            //获得儿子
            public function getChind($fid)
            {
                static $num = 0;
                $arr = array();
                $this->checkNum($fid);
                    foreach($this->arr as $key=>$row){      
                        if( $row['parentid'] == $fid){
                                $arr[] = $row;      
                                unset($this->arr[$key]);
                        }   
                    }       
                    if(!empty($arr)){   
                            $num++;
                            return $this->sortArr($arr);
                    }else{
                            return null;
                    }
            }

            //获取本人儿子孙子
            public function chindAll($fid,$input=null)
            {
                static $n =0;
                $n++;
                $arr = $this->getChind($fid);
                if(!empty($arr)){
                    $count = count($arr);
                    if(empty($input)){
                        for($i=0; $i<$count ;$i++){
                            $this->tree[$i] = $arr[$i];
                        }
精彩图集

赞助商链接