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版(2)
Oct 09 PHP
用php+mysql一个名片库程序
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
关于PHP中Object对象的笔记分享
Jun 28 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
php 删除指定文件夹的实例讲解
Jul 25 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
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP递归的三种常用方式
2019/02/28 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
微信JS接口大全
2016/08/25 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
JS实现简易计算器
2020/02/14 Javascript
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python内置异常类型全面汇总
2020/05/28 Python
python中的yield from语法快速学习
2020/11/06 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
linux系统都有哪些运行级别
2016/03/26 面试题
大专学生推荐信范文
2013/11/19 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
redis复制有可能碰到的问题汇总
2022/04/03 Redis