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修改Linux或Unix口令的方法分享
Jan 30 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
PHP将XML转数组过程详解
Nov 13 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
php+highchats生成动态统计图
May 21 PHP
php合并数组中相同元素的方法
Nov 13 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
Aug 11 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/26 PHP
常用PHP框架功能对照表
2014/10/23 PHP
PHP加密解密类实例分析
2015/04/20 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
python解析json实例方法
2013/11/19 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python函数不定长参数使用方法解析
2019/12/14 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
C语言编程题
2015/03/09 面试题
Linux内核产生并发的原因
2016/11/08 面试题
公司财务工作总结的自我评价
2013/11/23 职场文书
毕业生实习鉴定
2013/12/11 职场文书
合作意向书范本
2014/03/31 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
春节慰问信范文
2015/02/15 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python