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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
十天学会php之第十天
Oct 09 PHP
NT IIS下用ODBC连接数据库
Oct 09 PHP
PHP 递归效率分析
Nov 24 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
PHP中Http协议post请求参数
Nov 02 PHP
PHP多维数组元素操作类的方法
Nov 14 PHP
浅谈PHP封装CURL
Mar 06 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 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
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
Python操作json数据的一个简单例子
2014/04/17 Python
Python中使用动态变量名的方法
2014/05/06 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
快速了解Python中的装饰器
2018/01/11 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
工程地质勘察专业大学生求职信
2013/10/13 职场文书
思想品德自我评价
2014/02/04 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
欧元符号 €
2022/02/17 杂记
mysql查询结果实现多列拼接查询
2022/04/03 MySQL