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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 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 日常开发小技巧
2009/09/23 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
公司综合部的成员自我评价分享
2013/11/05 职场文书
给公司的建议书范文
2014/05/13 职场文书
关于教师节的广播稿
2014/09/10 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书