自已写的一个无限级分类,初级程序员,不足的地方,请指教!!
---------------------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元