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 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
php正则校验用户名介绍
Jul 19 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
Linux下php5.4启动脚本
Aug 03 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php ajax数据传输和响应方法
Aug 21 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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
桌面中心(四)数据显示
2006/10/09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
深入分析PHP设计模式
2020/06/15 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
javascript中length属性的探索
2011/07/31 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
原生python实现knn分类算法
2019/10/24 Python
Python实现AI换脸功能
2020/04/10 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
计算机科学与技术应届生求职信
2013/11/07 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
2014年医院工作总结
2014/11/20 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
2015年校医个人工作总结
2015/07/24 职场文书