本文以实例描述了thinkphp采用标签实现三级循环代码,具体操作步骤如下:
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']_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.模板部分:
{$vo.alias} --{$child.alias} ---{$grand.alias}