무제한 범주, 데이터베이스에서 데이터 쿼리, 배열에서 사용자 정의 정렬을 반복적으로 수행
풀어 주다: 2016-07-25 09:02:08
无限分类,从数据库查询数据 在数组中递归进行自定义排序,其中也意识到挺多不足,处理得不好,可能有更好办法,大家一起交流 超过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 '
';
- 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];
- }
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31