Smarty for foreach 使用
{for}
{for}{forelse}
用于创建一个简单的循环。 下面的几种方式都是支持的:
{for $var=$start to $end}
步长1的简单循环。{for $var=$start to $end step $step}
指定步长的循环。
{forelse}
在循环不能遍历的时候执行。(类似python中的else)
属性:
参数名称 | 缩写 | 类型 | 必选参数 | 默认值 | 说明 |
---|---|---|---|---|---|
max | n/a | integer | No | n/a | 循环的次数 |
可选标记:
名称 | 说明 |
---|---|
nocache | 关闭{for} 循环的缓存 |
Example 7.27. 简单的{for}
循环
- <ul>
- {for $foo=1 to 3}
- <li>{$foo}</li>
- {/for}
- </ul>
输出:
- <ul>
- <li>1</li>
- <li>2</li>
- <li>3</li>
- </ul>
Example 7.28. 使用max
属性
- $smarty->assign('to',10);
- <ul>
- {for $foo=3 to $to max=3}
- <li>{$foo}</li>
- {/for}
- </ul>
输出:
- <ul>
- <li>3</li>
- <li>4</li>
- <li>5</li>
- </ul>
Example 7.29. {forelse}
的执行
- $smarty->assign('start',10);
- $smarty->assign('to',5);
- <ul>
- {for $foo=$start to $to}
- <li>{$foo}</li>
- {forelse}
- no iteration
- {/for}
- </ul>
输出:
- no iteration
参见{foreach}
, {section}
和 {while}
上面参考:http://www.smarty.net/docs/zh_CN/language.function.for.tpl
foreach:
{foreach},{foreachelse}
{foreach}
用于循环数组。 {foreach}
的语法比{section}
循环要更简单和清晰,并且可以使用非数字下标的数组。
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
Note
foreach的语法可以接受没有名称的属性,该语法是Smarty 3新增的。然而Smarty 2语法 {foreach from=$myarray key="mykey" item="myitem"}
也同样支持。($smarty2的foreach语法一点也不友好,第一次看的时候总觉得很别扭)。
{foreach}
循环可以被嵌套使用.array
变量,一般是数组的值,决定了{foreach}
循环的次数。你也可以传递一个任意的整数来控制循环次数。如果
array
数组变量中,没有值的情况下,{foreachelse}
将执行。{foreach}
的属性:@index
,@iteration
,@first
,@last
,@show
,@total
.{foreach}
的语法命令:{break}
,{continue}
.代替指定
key
变量,你可以通过{$item@key}
来使用循环的当前key。(见下面的例子).
Note
$var@property
的语法是Smarty 3新增的。然而Smarty 2风格的语法{foreach from=$myarray key="mykey" item="myitem"}
,$smarty.foreach.name.property
也是支持的。
Note
即使你在循环语法里{foreach $myArray as $myKey => $myValue}
已经指定了key的变量名,但循环体内$myValue@key
还是可用的。
可选标记:
名称 | 说明 |
---|---|
nocache | 关闭{foreach} 循环的缓存 |
Example 7.30. 简单的{foreach}
循环
- ?php
- $arr = array('red', 'green', 'blue');
- $smarty->assign('myColors', $arr);
- ?>
模板将顺序输出$myColors
。
- <ul>
- {foreach $myColors as $color}
- <li>{$color}</li>
- {/foreach}
- </ul>
Example 7.31. 使用key
变量的例子
- <?php
- $people = array('fname' => 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
- $smarty->assign('myPeople', $people);
- ?>
模板将以键值对的方式输出$myArray
- <ul>
- {foreach $myPeople as $value}
- <li>{$value@key}: {$value}</li>
- {/foreach}
- </ul>
输出:
- <ul>
- <li>fname: John</li>
- <li>lname: Doe</li>
- <li>email: j.doe@example.com</li>
- </ul>
感觉用@熟悉不好看,用下面的好看些:
{foreach $myColors as $key=>$value}
<li>{$key}==>{$value}</li>
{/foreach}
。
Example 7.32. 多维数组通过item
和 key
来嵌套使用{foreach}
多维数组的键一般会对应另一个数组。
- <?php
- $smarty->assign('contacts', array(
- array('phone' => '555-555-1234',
- 'fax' => '555-555-5678',
- 'cell' => '555-555-0357'),
- array('phone' => '800-555-4444',
- 'fax' => '800-555-3333',
- 'cell' => '800-555-2222')
- ));
- ?>
模板将输出$contact
.
- {* key always available as a property *}
- {foreach $contacts as $contact}
- {foreach $contact as $value}
- {$value@key}: {$value}
- {/foreach}
- {/foreach}
- {* accessing key the PHP syntax alternate *}
- {foreach $contacts as $contact}
- {foreach $contact as $key => $value}
- {$key}: {$value}
- {/foreach}
- {/foreach}
上面两个例子输出结果一样。
Example 7.33. {foreachelse}的数据库例子
循环显示数据库(PDO)结果。例子是循环了一个PHP的迭代器(iterator)而不是一个数组(array)。
更多:
http://www.smarty.net/docs/zh_CN/language.function.foreach.tpl
Smarty for foreach 使用的更多相关文章
- Smarty控制foreach输出数量
最近在搞ecshop,ecshop用的是smarty.在首页中想要修改展示的商品数量,但是用的是foreach,让我无从下手,在网上找了好久终于找到解决方案. <!--{foreach name ...
- Smarty 限制foreach的循环次数
<!--{foreach from=$news item=news name=foo}--> <!--{if $smarty.foreach.foo.index <7}--&g ...
- smarty中foreach的用法举例
- smarty在循环的时候计数来显示这是第几次循环的功能
想必有很多人比较喜欢这个smarty循环的时候有个变量增加的功能或比较需要这个功能吧?其实不需要额外的变量,当然你也许根本用不了.我们用smarty内置的就可以了.就是smarty有foreach和s ...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- PHP代码审计6-实战漏洞挖掘-xdcms用户注册页面漏洞
xdcms 源码:xdcms v2.0.8 1.配置 [一直下一步(仅为测试)] #数据库账号root,密码为空:管理员账号/密码:xdcms/xdcms #登录后台 2.查看后台登录页面的配置项[x ...
- smarty foreach循环
1,smarty foreach1,单纯的数组array(1000,2000,3000),使用foreach(from = $array item=foo){$foo}2,键值对数组<ul> ...
- Smarty模板技术之foreach遍历数组实例全面讲解
一.item属性用法 <?php $arr = array(, , ); $smarty->assign('testarrg', $arr); ?> 用Smarty中的foreach ...
- smarty -- foreach用法
{foreach},{foreachelse} 用于像访问序数数组一样访问关联数组 {foreach},{foreachelse} {foreach} is used to loop over an ...
随机推荐
- linux关于readlink函数获取运行路径的小程序
http://blog.csdn.net/djzhao/article/details/8178375 相关函数: stat, lstat, symlink表头文件: #include <u ...
- vSphere文档中心
http://pubs.vmware.com/vsphere-51/index.jsp#com.vmware.vsphere.install.doc/GUID-7C9A1E23-7FCD-4295-9 ...
- OpenStack Networking
今天的数据中心网络比以往不论什么时候包括的设备都要多,比如server.网络设备.存储系统和安全设备等.这当中有非常多被近一步划分为多个虚拟机和虚拟网络.IP地址的数量.路由配置和安全规则能够迅速达到 ...
- Codeforces 362D Fools and Foolproof Roads 构造题
题目链接:点击打开链接 题意: 给定n个点 m条边的无向图 须要在图里添加p条边 使得图最后连通分量数为q 问是否可行,不可行输出NO 可行输出YES,并输出加入的p条边. set走起.. #incl ...
- iPhone 各版本屏幕分辨率
参考:http://www.paintcodeapp.com/news/iphone-6-screens-demystified
- jquery实现图片切换和js实现图片切换
jquery实现图片切换: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...
- LA 6450 Social Advertising
[题目] 给一个无向图,每当对某个点操作,该点以及与该点相连的点都获得标记,问标记所有点至少需要操作多少次 输入 第一行为T,表示测试数据组数 每组测试数据第一行为n(1<=n<=20)表 ...
- DIV布局之道一:DIV块的水平并排、垂直并排
DIV布局网页元素的方式主要有三种:平铺(并排).嵌套.覆盖(遮挡).本文先讲解平铺(并排)方式. 1.垂直平铺(垂直排列) 请看如下代码 CSS部分: CSS Code复制内容到剪贴板 .lay1{ ...
- 关于EditText组件在android4.4W中出现黄色感叹号的问题?
今天用eclipse编写android4.4W的项目,在XML中用到了EditText组件来写文本框,结果出现了黄色感叹号,还出现一句 This text field does not specify ...
- java关键字 (jdk6),各自的含义是什么?
Abstract 抽象的 一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承.一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现. bre ...