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在线打包程序源码
Jul 27 PHP
smarty的保留变量问题
Oct 23 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
PHP两种快速排序算法实例
Feb 15 PHP
php输出xml属性的方法
Mar 19 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
php 实现进制相互转换
Apr 07 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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程序?
2006/12/08 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
学习jQuey中的return false
2015/12/18 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
go和python变量赋值遇到的一个问题
2017/08/31 Python
Django中的Signal代码详解
2018/02/05 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
在django中自定义字段Field详解
2019/12/03 Python
python切割图片的示例
2020/11/12 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
团支部推优材料
2014/05/21 职场文书
学校工作推荐信范文
2014/07/11 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
决心书格式及范文
2019/06/24 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
日元符号 ¥
2022/02/17 杂记
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
Golang Web 框架Iris安装部署
2022/08/14 Python