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
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 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
PHP三元运算符的结合性介绍
2012/01/10 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
js实现缓冲运动效果的方法
2015/04/10 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
建筑施工员岗位职责
2013/11/26 职场文书
集体备课反思
2014/02/12 职场文书
《中华少年》教学反思
2014/02/15 职场文书
环保宣传标语
2014/06/12 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL