利用视图引擎的assign方法可以将包括数组在内的数据分配到模版处理。在模版中,开发人员可以使用传统的下标或索引取到数组内的数据,例如$list["title"]。这种方式只能获取到单一的数据,如果一个数组集合中存在大量的数据(例如数据表集),那么就需要使用循环语句逐条读取。ThinkPHP默认的模版引擎提供了3种数据循环方式,分别为volist、foresch以及for标签。这3对标签可以混合使用,但它们都有各自的适用对象,下面分别进行介绍。
1、vilist标签
volist标签是一对功能强大,使用方便的数据循环标签,它支持多维数组或一维数组的循环。由于它容易使用,并且语法灵活,所以在ThinkPHP模版中该标签比较常见。volist标签被模版引擎解释后将转换成foreach()...endforeach语句。一条简单的volist标签语句格式如下代码所示。
如上代码所示,数据源支持PHP所有数组(不支持对象),临时变量名称可以自定义,该变量名决定了在循环体中可以使用的数组名称。为了方便演示,这里将在控制器index动作中定义个多维数组,如下代码所示
上述代码定义了1个数组,并定义了3条数据。在index.html中可以使用volist标签将数组数据循环输出代码如下所示
如上述代码所示,list为数组变量,该变量由index动作分配。在标签中直接引用变量只需要变量名即可,不需要定界符和”$"符号。$vo是一个临时变量(由volist标签id值指定),所有等待循环的数据都被存放在该变量中,$vo.user_name表示输出数组中的user_name键对应值,读者还可以像传统的PHP那样写成$vo[‘user_name']。
在实际应用中,一般只需要使用volist标签的name和id属性即可完成大多数的数据循环。ThinkPHP为了能够使volist标签更佳灵活,还提供了另外一些实用的可选属性,,这些属性如下
● offset:起始数据序列
● length:数据结束序列
● key:数据循环式的临时变量,相当于从0开始的索引号,默认变量名为i。
● mod:对key值取模
● empty:当那么数组为空时显示的字符串信息
offset和length配合使用能够实现简单的数据分页功能,如果数组信息过多,可以使用offset和length分片输出,如以下代码所示
上述代码标志只循环索引号2~5之间的数据,利用offset和length属性,可以方便地控制页面中的局部数据。
2、foreach标签
foreach标签是volist标签的简化版,使用方式一样,最终生成的PHP代码也一样,唯一不同的就是foreach标签不支持volist中可选属性(只支持key)。另外,foreach不仅可以循环PHP数组,还可以循环对象。foreach的临时变量使用item代替volist中的id。如下代码所示
3、for标签
for标签也是一种可以实现数据循环的标签,最终生成的嗲吗就是PHP中的for语句块。无论是简洁性、易用性还是程序的运行速度都不及volist、foreach标签。但for标签不仅可以循环数组,还可以循环普通的PHP变量、函数等,常用在局部统计、更新等场合。for标签格式如下
一条简单的for标签语句只需要开始值和结束值即可,这些变量值都支持模版或者控制器动作中的变量值,如下代码所示
在for标签中使用变量与volist、foreach标签不同,在for标签中使用变量必须在变量名称上加上"$",并且变量不支持“|”函数引用符号。for标签可选属性如下
● comparison:start和end的条件,默认为lt(小于)。常用的有elt(等于活小于)、eq(等于)。
●step:步进条数
●name:循环时变量名,默认为i。
些天向大家分享了一些ThinkPHP操作数据库的教程,不过一下子要记住这么多东西不是一件容易的事情,所以大家需要在实战中边开发边学习,才能更轻松的掌握技能。今天,我要向大家分享如何使用ThinkPHP模版标签来实现循环输出功能。
图片来自网络
ThinkPHP内置很多模版标签,今天我只向大家分享循环输出标签。以后会逐渐分享其他常用模板标签的用法。
ThinkPHP内置模版标签
Foreach标签用来循环输出数据,通常用于输出数据库select查询结果,如下所示。
控制器代码
模板代码
最终输出结果如下:
输出结果
在foreach标签中,name为控制器赋值的变量名(users),item为循环内的变量名(user)。
Volist标签与Foreach类似,不过它拥有更多用法,最基本用法如下:
Volist基本用法
输出结果
可以看到,Volist标签中只是把item换成id,其他完全相同。
但是如果我们只需要输出第1-10(注意数组是从0开始的)条数据,可以这样用:
Volist的offset用法
输出结果
如果数据为空时,我们还可以使用empty属性来输出指定信息:
Volist的empty用法
输出结果
由于我们使用Table来输出数据,而empty不支持直接传入html标签,所以“无用户信息”被解析到了table外。我们可以这样解决:
控制器赋值empty
Volist的empty接收变量
输出结果
for标签的用法很简单,如下:
<for start="开始值" end="结束值" step="步进值" name="循环变量名" >输出内容</for>
开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。name的默认值是i,步进值的默认值是1,举例如下:
for标签用法
输出结果
在开发中,我们需要经常用到循环输出功能,掌握循环输出的用法志在必得。
P的标签给我一种很复杂的感觉。可能是别的框架的写法太简洁了吧。
但是好处也是有的......下面会说到。其实也是各有利弊了。也不能说谁是绝对的好。
最常见的几个标签,if,foreach,
for。foreach以前讲过。
写法也简单,{foreach $ a as $ v} {/ foreach}
这个看起来比较简洁。也是最易容的一个标签。
也可以用原来的写法name='a'item='v'。
对比上面的不难看出来对应的是啥。
对于foreach标签,有一个强化版的标签。叫做ovlist标签。
格式也略不同{volist name='a'id='v'} {/ volist}
这样的功能和foreach一样。但是可以多很多参数。offset
='
11'length='20' 在id后面加上上面的参数就会多出这样的功能,取出第11条-20的条数据
参数MOD是输出某某某条数。
比如输出偶数条数就是MOD='2'
还有另外一个作用就是做判断。如果输出了多少条数据,额外输出某些内容。
{eq name=' mod'value='4'}
{/ eq}
如果查询的 数据为空的时候可以用空来输出。
空='xxx'的不支持直接HTML语法,可以插入变量。提前用分配来赋值。
为标签
开始一直没看到for标签里的比较是啥意思。也不懂默认值it is啥意思。原来是条件的意思,默认值是小于。
{for start=' 1'end='100'} {对于}
这是最简单的写法解析后是
为($ I=1; $ I <100; $ I +=1)
。当然很多地方需要改,首先的英文我不一定就是小于一定的数值
我们添加比较=” xx'来修改
。xx根据比较标签来改。
我不想就+1是,也许是+2,那么加上step
step='2'就好了
我不喜欢$ i我要用$ n,那么就加上name'n'就好了
,如果标签
如果标签不是直接的,如果()了
分为三种写法。
{if condition='xx'}
{if(xx)}
{if xx}
一套完整的就是
{if xxx} v1
{elseif xxx} v2
{else /} v3
{/ if}
大致这样子。了解这三个标签剩下的就是自己组合了
原文地址:http : //blog.itbool.com/home/article/index/article_id/76.html
*请认真填写需求信息,我们会在24小时内与您取得联系。