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中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
使用php计算排列组合的方法
Nov 13 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 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 Hash函数,增强密码安全
2011/02/25 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Numpy数组的保存与读取方法
2018/04/04 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
关于十八大的演讲稿
2014/09/15 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
项目投资意向书范本
2015/05/09 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android