ThinkPHP采用实现三级循环代码实例


Posted in PHP onJuly 18, 2014

本文以实例描述了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 name="category" id="select" class="text mr5"> 
 <volist name="list" id="vo"> 
  <option name="cid" value="{$vo.id}" <eq name="vo.id" value="getid">selected</eq> >{$vo.alias}</option>  
 <volist name="vo['child']" id="child"> 
  <option name="cid" value="{$child.id}" <eq name="child.id" value="getid">selected</eq> >--{$child.alias}</option>  
  <volist name="child['grandchild']" id="grand"> 
  <option name="cid" value="{$grand.id}" <eq name="grand.id" value="getid">selected</eq> >---{$grand.alias}</option>  
  </volist> 
 </volist> 
 </volist> 
 </select>
PHP 相关文章推荐
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php中Smarty模板初体验
Aug 08 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
php输出反斜杠的实例方法
Sep 19 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
php+websocket 实现的聊天室功能详解
May 27 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 #PHP
ThinkPHP关于session的操作方法汇总
Jul 18 #PHP
php中实现精确设置session过期时间的方法
Jul 17 #PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 #PHP
浅谈php安全性需要注意的几点事项
Jul 17 #PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 #PHP
ThinkPHP应用模式扩展详解
Jul 16 #PHP
You might like
自动分页的不完整解决方案
2007/01/12 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
Pytorch之contiguous的用法
2019/12/31 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
小学生红领巾广播稿
2014/01/21 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
遗失说明具结保证书
2015/02/26 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
Nginx配置之禁止指定IP访问
2022/05/02 Servers