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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
我的论坛源代码(十)
Oct 09 PHP
php mysql Errcode: 28 终极解决方法
Jul 01 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
PDO::inTransaction讲解
Jan 28 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
理解Python中的类与实例
2015/04/27 Python
简单实现python聊天程序
2018/04/01 Python
python绘制直线的方法
2018/06/30 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
django rest framework serializers序列化实例
2020/05/13 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
节水口号标语
2014/06/19 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
检举信的写法
2019/04/10 职场文书
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js