smarty模板的循环有2种写法:foreach、section
1、foreach方式
格式(注:此篇日志中,smarty模板的开始结束标识符被定义为:<{ }>):
<{foreach from=$arrayName key=colkey item=$colvalue name=elementName}>
参数说明:
from :必填,说明循环源
item:必填,从数组中取得的value
key:选填,从数组中取得value对应的key
name:选填,给从数组取得的“key-value“对命名
下面是foreach的例子:
$books=Array ( [0] => Array ( [isbn] => 0-672-31745-1 [author] => Thomas Down [title] => Installing Debian GNU/Linux [price] => 24.99 ) [1] => Array ( [isbn] => 0-672-31769-9 [author] => Thomas Schenk [title] => Caldera OpenLinux System Administration Unleashed [price] => 49.99 ) )
模板代码
此部分对应的打印结果:
1. Title:Installing Debian GNU/Linux
Author:Thomas Down
ISBN:0-672-31745-1
Price:24.99
2. Title:Caldera OpenLinux System Administration Unleashed
Author:Thomas Schenk
ISBN:0-672-31769-9
Price:49.99
此处需注意如下:
1、输出变量,需要加上模板的开始、结束符。在调试的过程中,由于没有加<{}>,导致 输入的是:未解析的$book['author'] ,很费了点功夫在找到问题所在。
2、模板中定义变量,例子如下:
<{assign var="i" value=0}> (说明:i是整型,所以value=0,不需要加双引号,否则会被判定为字符串类型)
由于foreach没有像for那样的计数器,所以在这里自定义了一个计数器,在循环中计数。作用:用于输出没条记录前的编号。也可以不在模板页定义变量,在include该模板的页,管理变量时,传一个变量i进来也行。
3、关于smarty中的加运算,试了一下,smarty中不支持“++”(包括变量前++、变量后++)、“+=”的方式,所以增加1还是用“$i=$i+1“的方式
2、section方式
相应模板部分的内容如下:
输入内容同foreach方式的结果一致。