Smarty Foreach 使用说明


Posted in PHP onMarch 23, 2010

foreach 是除 section 之外处理循环的另一种方案(根据不同需要选择不同的方案)。 foreach 用于处理简单数组(数组中的元素的类型一致),它的格式比 section 简单许多,缺点是只能处理简单数组。
foreach 必须和 /foreach 成对使用,且必须指定 from 和 item 属性。
将 from 属性指定的数组中的数据遍历处理到 item 属性指定的变量中。
参考 foreach (array_expression as $key => $value)
from <=> array_expression;item <=> $value;key <=> $key。
name 属性可以任意指定(字母、数字和下划线的组合)。
foreach 可以嵌套,但必须保证嵌套中的 foreach 名称唯一。
from 属性(通常是数组)决定循环的次数。
foreachelse 语句在 from 属性没有值的时候被执行。(from 属性所指定的值为空时,可用 foreachelse 语句指定——否则-干什么)
foreach 循环有自己的变量名,使用该变量名可以访问该循环. 使用方法为 {$smarty.foreach.foreachname.varname},其中 foreachname 即在 foreach 中指定的 name 属性。

foreach 演示
{* 该例将输出数组 $custid 中的所有元素的值 *}

{foreach from=$custid item=curr_id} 
id: {$curr_id}<br> 
{/foreach}

输出结果:
id: 1000
id: 1001
id: 1002
foreach 键的演示和嵌套的演示
{*
数组定义如下:
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"), 
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234"))); 
*} 
{* 键就是数组的下标,请参看关于数组的解释 *} 
{foreach name=outer item=contact from=$contacts} 
{foreach key=key item=item from=$contact} 
{$key}: {$item}<br> 
{/foreach} 
{/foreach}

输出结果:
phone: 1
fax: 2
cell: 3
phone: 555-4444
fax: 555-3333
cell: 760-1234

.index
index 包含当前数组索引,从"0"开始
例如:

<table> 
{foreach from=$items key=myId item=i name=foo} 
{if $smarty.foreach.foo.index % 5 == 0} {* $smarty.foreach.foo.index 对 5 求余 *} 
<tr><th>Title</th></tr> 
{/if} 
<tr><td>{$i.label}</td></tr> 
{/foreach} 
</table>

.iteration
iteration 包含当前循环的执行次数,总是从 1 开始,每执行一次自加 1。
例如:
{* 输出 0|1, 1|2, 2|3, ... 等等 *} 
{foreach from=$myArray item=i name=foo} 
{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration}, 
{/foreach}

.first
当前 foreach 循环第一次执行时 first 被设置成 true。
例如:
{* 当循环第一次执行时显示 LATEST , o 否则显示 id *} 
<table> 
{foreach from=$items key=myId item=i name=foo} 
<tr> 
<td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td> 
<td>{$i.label}</td> 
</tr> 
{/foreach} 
</table>

.last
当前 foreach 循环执行到最后一遍时 last 被设置成 true.
例如:
{* 在列表最后添加水平线 *} 
{foreach from=$items key=part_id item=prod name=products} 
<a href="#{$part_id}">{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if} 
{foreachelse} 
... content ... 
{/foreach}

.total
total 用于显示循环执行的次数,可以在循环中或循环执行后调用.
例如:
{* 在最后显示行数 *} 
{foreach from=$items key=part_id item=prod name=foo} 
{$prod.label}<hr/> 
{if $smarty.foreach.foo.last} 
<div id="total">{$smarty.foreach.foo.total} items</div> 
{/if} 
{foreachelse} 
... something else ... 
{/foreach}
PHP 相关文章推荐
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
火车头采集器3.0采集图文教程
Mar 17 PHP
Session保存到数据库的php类分享
Oct 24 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 #PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 #PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 #PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 #PHP
PHP中10个不常见却非常有用的函数
Mar 21 #PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 #PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 #PHP
You might like
php $_ENV为空的原因分析
2009/06/01 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
php模板原理讲解
2013/11/13 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python tkinter窗口最大化的实现
2019/07/15 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
合作意向书
2014/07/30 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
2015年检验科工作总结
2015/04/27 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server