PHP 无限分类,从数据库查询数据 在数组中递归进行自定义排序
无限分类,从数据库查询数据 在数组中递归进行自定义排序 无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家
无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家一起交流 超过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]; }
精彩图集
精彩文章