本文以實例描述了ThinkPHP采用<volist>標簽實現三級循環代碼,具體操作步驟如下:
1. 三級循環需要三維數組,實現代碼如下:
function MakeTree($pid,$level) { $map['pid'] = $pid; $map['level'] = $level; $result = $this->where($map)->order('rank ASC')->findall(); if($result){ foreach ($result as $key => $value){ $title = $value['alias']; $list[$title]['id'] = $value['id']; $list[$title]['pid'] = $value['pid']; $list[$title]['alias']= $value['alias']; $list[$title]['title'] = $value['title']; $list[$title]['level'] = $value['level']; $list[$title]['state'] = $value['state']; $list[$title]['rank'] = $value['rank']; if($value['level']<=3){$list[$title]['child'] = $this->_MakeSonTree($value['id']); } } } return $list; }function _MakeSonTree($pid) { $map['pid'] = $pid; $result = $this->where($map)->order('rank ASC')->findall(); if($result){ foreach ($result as $key => $value){ $title = $value['alias']; $list[$title]['id']= $value['id']; $list[$title]['pid']= $value['pid']; $list[$title]['alias']= $value['alias']; $list[$title]['title'] = $value['title']; $list[$title]['level'] = $value['level']; $list[$title]['state'] = $value['state']; $list[$title]['rank'] = $value['rank'];if($this->haschild($value['id'])){ //先判斷是否有第三級子類,最后的數組形如$result['child']['grandchild'];$list[$title]['grandchild']=$this->_MakeSonTree($value['id']);} } } return $list; }function haschild($id){ $result=D('LearningChannel')->where("pid=".$id)->find(); if($result){ return true; } else return false; }
2.綁定volist標簽:
$result=D('Learning') ->MakeTree(0,1); //dump($result); $this->assign('list',$result);
3.模板部分:
<select> <volist><option value="{$vo.id}" <eq value="getid">selected</eq> >{$vo.alias}</option><volist><option value="{$child.id}" <eq value="getid">selected</eq> >--{$child.alias}</option><volist><option value="{$grand.id}" <eq value="getid">selected</eq> >---{$grand.alias}</option></volist> </volist> </volist> </select>
新聞熱點
疑難解答