整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

框架中视图引擎中的数据循环

框架中视图引擎中的数据循环

利用视图引擎的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

Foreach标签用来循环输出数据,通常用于输出数据库select查询结果,如下所示。

控制器代码

模板代码

最终输出结果如下:

输出结果

在foreach标签中,name为控制器赋值的变量名(users),item为循环内的变量名(user)。

Volist

Volist标签与Foreach类似,不过它拥有更多用法,最基本用法如下:

Volist基本用法

输出结果

可以看到,Volist标签中只是把item换成id,其他完全相同。

但是如果我们只需要输出第1-10(注意数组是从0开始的)条数据,可以这样用:

Volist的offset用法

输出结果

如果数据为空时,我们还可以使用empty属性来输出指定信息:

Volist的empty用法

输出结果

由于我们使用Table来输出数据,而empty不支持直接传入html标签,所以“无用户信息”被解析到了table外。我们可以这样解决:

控制器赋值empty

Volist的empty接收变量

输出结果

For

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