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(视频)Http下载
Dec 12 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
php 获取select下拉列表框的值
May 08 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
php中设置多级目录session的问题
Aug 08 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP 导出Excel示例分享
Aug 18 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
详解php用static方法的原因
Sep 12 PHP
PHP hex2bin()函数用法讲解
Feb 25 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
python cookielib 登录人人网的实现代码
2012/12/19 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
对python字典过滤条件的实例详解
2019/01/22 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
什么是python类属性
2020/06/10 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
师范生个人推荐信
2013/11/29 职场文书
中学生自我评价范文
2014/02/08 职场文书
车间主任岗位职责
2014/03/16 职场文书
真诚的求职信
2014/07/04 职场文书
安全隐患整改报告
2014/11/06 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS