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

无限分类,从数据库查询数据 在数组中递归进行

时间:2014-07-22 14:50来源: 作者: 点击:
分享到:
无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家一起交流 超过100行了。放不全 br /
无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家一起交流  超过100行了。放不全

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];
						}

2. [文件] 自定义无限分类Tree.class.rar ~ 2KB     下载(50)     [全屏预览]

精彩图集

赞助商链接