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 相关文章推荐
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
php解析url的三个示例
Jan 20 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
php实现通过ftp上传文件
Jun 19 PHP
CI框架中redis缓存相关操作文件示例代码
May 17 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 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/25 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
javascript json2 使用方法
2010/03/16 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python有参函数使用代码实例
2020/01/06 Python
pandas apply多线程实现代码
2020/08/17 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
初中生操行评语大全
2014/04/24 职场文书
人力资源管理求职信
2014/08/07 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
小学优秀班主任材料
2014/12/17 职场文书
个人工作表现自我评价
2015/03/06 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers