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 GBK→UTF-8编码转换
May 24 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
php强制下载类型的实现代码
Apr 21 PHP
destoon复制新模块的方法
Jun 21 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
详解PHP发送邮件知识点
May 06 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 PHP
通过代码实例解析PHP session工作原理
Dec 11 PHP
php 解析非标准json、非规范json
Apr 01 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 debug 安装技巧
2011/04/30 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
Javascript 继承机制实例
2009/08/12 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
javascript求日期差的方法
2016/03/02 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
js动态引入的四种方法
2018/05/05 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python中的choice()方法使用详解
2015/05/15 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
python使用matplotlib绘制热图
2018/11/07 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
抽象类和接口的区别
2012/09/19 面试题
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
行政主管职责范本
2014/03/07 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
高中开学感言
2015/08/01 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript