`

ThinkPHP中foreach和volist的区别

    博客分类:
  • PHP
阅读更多

1.foreach标签
foreach标签用于循环输出:
foreach(name,item,key)
name(必须):要输出的数据模板变量
item(必须):循环单原变量
key(可选):循环的key变量,默认值为key
示例:
<foreach name='list' item='vo'>
 {$vo.id}
 {$vo.name}
</foreach>
foreach标签相对于volist标签简洁,没有volist标签那么多功能。优势是可以对对象进行遍历输出,而volist标签通常是用于输出数组。

2.volist标签
volist标签主要用于在模板中循环输出数据集或者多维数组
volist(name,id,offset,length,key,mod,empty)
name(必须):要输出的数据模型变量
id(必须):循环变量
offset(可选):要输出数据的offset
length(可选):输出数据的长度
key(可选):循环的key变量,默认值为i
mod(可选):对key值取模,默认为2(用于偶数行查询等)
empty(可选):如果数据为空显示的字符串

通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。
在Action中首先对模板赋值:
$user=M('User');
$list=$user->select();
$this->assign('list',$list);
$this->display();
在模板定义如下,输出编号和姓名
<volist name='list' id='vo'>
 {$vo.id}
 {$vo.name}
</volist>
支持输出部分数据,例如输出其中的第5-15条记录:
<volist name='list' id='vo' offset='5' length='10'>
 {$vo.id}
 {$vo.name}
</volist>
输出偶数行记录:
<volist name='list' id='vo' mod='2'>
 <eq name="mod" value='1'>{$vo.name}</eq>
</volist>
mod属性还用于控制一定记录的换行:
<volist name='list' id='vo' mod='5'>
{$vo.name}
<eq name="mod" value='4'><br/></eq>
</volist>
输出循环变量:
<volist name='list' id='vo' key='k'>
{$k}.{$vo.name}
</volist>
如果没有指定key属性的话,默认使用循环变量i,例如:

<volist name="list" id="vo"  >

{$i}.{$vo.name}

</volist>

如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:

<volist name="list" id="vo"  >

{$key}.{$vo.name}

</volist>

volist还有一个别名iterate,用法和volist是一样。

从2.1版开始允许使用函数设定数据集,如:

<volist name=":fun('arg')" id="vo">{$vo.name}</volist>

分享到:
评论

相关推荐

    ThinkPHP之foreach标签使用概述

    ThinkPHP模板的foreach标签用于在模板中循环输出数据集或者对对象进行遍历输出。 相对于volist标签而言,foreach标签没有volist标签那么多的功能,却可以对对象进行遍历输出,而volist标签通常是用于输出数组。 ...

    Thinkphp的volist标签嵌套循环使用教程

    系统内置的标签中,volist(及其别名iterate)、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。例如: &lt;volist name=...

    ThinkPHP模板中判断volist循环的最后一条记录的验证方法

    对于用过smarty做过php开发的朋友来说,应该都知道在smarty模板里面判断foreach循环是否是最后一个可以用$smarty.foreach.name.last来判断循环是否到了最后一条记录,在thinkphp的模板中常见的循环是volist,但是...

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

    本文以实例描述了ThinkPHP采用&lt;volist&gt;标签实现三级循环代码,具体操作步骤如下: 1. 三级循环需要三维数组,实现代码如下: function MakeTree($pid,$level) { $map['pid'] = $pid; $map['level'] = $level; $...

    ThinkPHP实战(夏磊)

    7.8.2foreach标签 1 7.8.3for标签 1 7.8.4switch标签 111 7.8.5比较标签 111 7.8.6empty标签 114 7.8.7defined标签 114 7.8.8标签嵌套 114 7.8.9import标签 115 7.8.使用原生PHP 115 7.8.11不解析输出 115 ...

    ThinkPHP模板中数组循环实例

    ThinkPHP开发过程中经常用到输出数组在模板中使用,一般select出来的数据都是二维数组,我们在模板中用volist标签就可以输出,今天开发遇到了这样一个问题:如果是二维数组,如何在模板中输出呢?经过查看开发手册,...

    Thinkphp5.0框架视图view的循环标签用法示例

    主要介绍了Thinkphp5.0框架视图view的循环标签用法,结合实例形式分析了thinkPHP5框架视图view中的volist标签、foreach标签、for标签相关使用方法,需要的朋友可以参考下

    thinkphp循环结构用法实例

    主要介绍了thinkphp循环结构用法,以实例形式讲解了for、volist及foreach的用法,是非常实用的技巧,需要的朋友可以参考下

    thinkphp标签实现bootsrtap轮播carousel实例代码

    由于轮播carousel第一个div需要设置active样式才能正常显示...使用volist标签在循环的同时可以取得下标(foreach,for标签实现不了) &lt;!-- carousel --&gt; &lt;volist name=bopic id=xt&gt; &lt;li data-target=#car

    Thinkphp无限级分类代码

    本篇就一点一点教大家写一个无限级分类出来,其实掌握一个知识,最主要的是要掌握无限级分类的逻辑,那么写起来就很容易的多了。 首先看数据库表:xp_cate ... &lt;?...class CateAction ...foreach($list as $key=&gt;$va

    DSmall TP框架多商户B2B2C商城系统开源商城V2.5.2

    2.volist 循环方法 统一为 foreach 3.数据库字段 pdr_payment_name去除 支付名称通过 get_order_payment_name 方法获取 4.Payment第三方支付优化 5.定时任务相关优化 6.解决ueditor插入代码相关BUG 7.优化第三方图片...

    DSmall TP框架多商户B2B2C开源商城系统V2.5.5

    2.volist 循环方法 统一为 foreach 3.数据库字段 pdr_payment_name去除 支付名称通过 get_order_payment_name 方法获取 4.Payment第三方支付优化 5.定时任务相关优化 6.解决ueditor插入代码相关BUG 7.优化第三方图片...

Global site tag (gtag.js) - Google Analytics