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实现文件上传二法
Oct 09 PHP
在线竞拍系统的PHP实现框架(二)
Oct 09 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
php中的静态变量的基本用法
Mar 20 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 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
第八节--访问方式
2006/11/16 PHP
php备份数据库类分享
2015/04/14 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
jQuery登陆判断简单实现代码
2013/04/21 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
python路径的写法及目录的获取方式
2019/12/26 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
pytorch中index_select()的用法详解
2021/01/06 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
手机被没收的检讨书
2014/10/04 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
工伤私了协议书范本
2014/11/24 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
nginx中proxy_pass各种用法详解
2021/11/07 Servers