控制器里:
递归方法:
//地区
public function getArea($data,$pid=0,$level=1){
//地区
$data=M('company')->order('id')->select();
//声明一个变量
static $result;
foreach($data as $key=>$val){
if($val['fatherid']==$pid){
$val['level']=$level;
$result[]=$val;
$this->getArea($data,$val['id'],$level+1);//此处id是父级fatherid对应的,如果父级id和表里其他字段对应则改为其他字段
}
}
return $result;
}
另个方法调用:
$datas=$this->getArea($data);
注意:为提高递归运行效率此处可改为如下:
//判断地区是否有缓存
$dataarea=S('area');
if(!empty( $dataarea)){
$datas = $dataarea;
}else{
$datas=$this->getArea($data);
S('area',$datas,24*60*60);
}
视图层:
<div class="select_textul">
<ul class="select_first_ul" name="id"> <foreach name="data" item="v">
<li value="{$v.id}">{:str_repeat(' ',$v['level']*3)}{$v.realname}
<ul class="select_second_ul" >
<li ></li>
</ul>
</li></foreach>
</ul>
<!-- <select name="id">
<option value="0">请选择</option>
<foreach name="data" item="v">
<option value="{$v.id}">{:str_repeat(' ',$v['level']*3)}{$v.realname}</option>
</foreach>
</select> -->
</div>