您好,欢迎访问一九零五行业门户网

Thinkphp 无限级分类

自已写的一个无限级分类,初级程序员,不足的地方,请指教!!
---------------------infinitemodel.class.php-------------
classobject=$object;
            $this->idname=$idname;
            $this->fatheridname=$fatheridname;
            $this->name=$name;
            $this->fu=$fu;
        }
        /*
         * 返回无限级数组
         */
        public function finallyresult()
        {
             $result=$this->classobject->field({$this->idname},{$this->fatheridname},{$this->name})->select(); 
             foreach ($result as $key =>$value )
             {
                    $this->infinitearr($value[$this->fatheridname],$value[$this->name],$value[$this->idname]);
             }
            return $this->infiniteresult;
        }
        //生成无限级数组
        private function infinitearr($fields,$name,$id)
       {
            if( empty($fields)  )
            {    
                $middle=array($name=>$id);
                if(in_array($middle,$this->parentarr))
                {
                    return false;
                    break;
                }else{
                    $this->parentarr[]=$middle;     //找到一个父级
                    $keyarr=array_keys($middle);
                    $this->infiniteresult[$middle[$name]]=$keyarr[0];
                    $multiple=$this->classobject->where({$this->fatheridname}={$middle[$name]})->field({$this->idname},{$this->name})->select(); 
                    $this->recursion($multiple,1);
                    return false;
                    break;
                }
            }else{
                 $result=$this->classobject->where({$this->idname}=.$fields)->field({$this->idname},{$this->name},{$this->fatheridname})->select();
                 $this->infinitearr($result[0][$this->fatheridname],$result[0][$this->name],$result[0][$this->idname]);
            }
       }
      //递归求数组
       private function recursion( $sonarray,$count)
       {
               if( is_array($sonarray) && !empty($sonarray)  )
               {
                       $fu='';
                       for( $i=0;$i                       {
                           $fu.=$this->fu;
                       }
                       $count++;
                       foreach( $sonarray as $key => $value  )
                       {
                           $this->infiniteresult[$value[$this->idname]]=$fu.$value[$this->name];
                           $multiple=$this->classobject->where({$this->fatheridname}={$value[$this->idname]})->field({$this->idname},{$this->name})->select();
                           $this->recursion($multiple,$count);
                       }
}else{
                   return false;
                   break;
               }
       }
}
?>
--------------调用 model--------
$infiniteob=new infinitemodel(m('admin_node'),'id','pid','name','─');
返回的是一个结果数组----------------效果图----------------
ad:真正免费,域名+虚机+企业邮箱=0元
其它类似信息

推荐信息