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 相关文章推荐
php2html php生成静态页函数
Dec 08 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
php操作mysqli(示例代码)
Oct 28 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
Smarty模板语法详解
Jul 20 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 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
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
jquery tools之tooltip
2009/07/25 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
python自动化生成IOS的图标
2018/11/13 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
公司领导推荐信
2013/11/12 职场文书
租房合同协议书
2014/04/09 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
团队拓展活动总结
2014/08/27 职场文书
招标授权委托书样本
2014/09/23 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年教研组工作总结
2014/11/26 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
国情备忘录观后感
2015/06/04 职场文书
让子弹飞观后感
2015/06/11 职场文书
工作一年自我鉴定
2019/06/20 职场文书