Smarty for foreach 使用
{for}
{for}{forelse}用于创建一个简单的循环。 下面的几种方式都是支持的:
{for $var=$start to $end}步长1的简单循环。{for $var=$start to $end step $step}指定步长的循环。
{forelse}在循环不能遍历的时候执行。(类似python中的else)
属性:
| 参数名称 | 缩写 | 类型 | 必选参数 | 默认值 | 说明 |
|---|---|---|---|---|---|
| max | n/a | integer | No | n/a | 循环的次数 |
可选标记:
| 名称 | 说明 |
|---|---|
| nocache | 关闭{for} 循环的缓存 |
Example 7.27. 简单的{for} 循环
<ul>
{for $foo=1 to 3}
<li>{$foo}</li>
{/for}
</ul>
输出:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
Example 7.28. 使用max 属性
$smarty->assign('to',10);
<ul>
{for $foo=3 to $to max=3}
<li>{$foo}</li>
{/for}
</ul>
输出:
<ul>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
Example 7.29. {forelse}的执行
$smarty->assign('start',10);
$smarty->assign('to',5);
<ul>
{for $foo=$start to $to}
<li>{$foo}</li>
{forelse}
no iteration
{/for}
</ul>
输出:
no iteration
参见{foreach}, {section} 和 {while}
上面参考:http://www.smarty.net/docs/zh_CN/language.function.for.tpl
foreach:
{foreach},{foreachelse}
{foreach}用于循环数组。 {foreach}的语法比{section}循环要更简单和清晰,并且可以使用非数字下标的数组。
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
Note
foreach的语法可以接受没有名称的属性,该语法是Smarty 3新增的。然而Smarty 2语法 {foreach from=$myarray key="mykey" item="myitem"}也同样支持。($smarty2的foreach语法一点也不友好,第一次看的时候总觉得很别扭)。
{foreach}循环可以被嵌套使用.array变量,一般是数组的值,决定了{foreach}循环的次数。你也可以传递一个任意的整数来控制循环次数。如果
array数组变量中,没有值的情况下,{foreachelse}将执行。{foreach}的属性:@index,@iteration,@first,@last,@show,@total.{foreach}的语法命令:{break},{continue}.代替指定
key变量,你可以通过{$item@key}来使用循环的当前key。(见下面的例子).
Note
$var@property的语法是Smarty 3新增的。然而Smarty 2风格的语法{foreach from=$myarray key="mykey" item="myitem"},$smarty.foreach.name.property也是支持的。
Note
即使你在循环语法里{foreach $myArray as $myKey => $myValue} 已经指定了key的变量名,但循环体内$myValue@key还是可用的。
可选标记:
| 名称 | 说明 |
|---|---|
| nocache | 关闭{foreach}循环的缓存 |
Example 7.30. 简单的{foreach} 循环
?php
$arr = array('red', 'green', 'blue');
$smarty->assign('myColors', $arr);
?>
模板将顺序输出$myColors。
<ul>
{foreach $myColors as $color}
<li>{$color}</li>
{/foreach}
</ul>
Example 7.31. 使用key变量的例子
<?php
$people = array('fname' => 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
$smarty->assign('myPeople', $people);
?>
模板将以键值对的方式输出$myArray
<ul>
{foreach $myPeople as $value}
<li>{$value@key}: {$value}</li>
{/foreach}
</ul>
输出:
<ul>
<li>fname: John</li>
<li>lname: Doe</li>
<li>email: j.doe@example.com</li>
</ul>
感觉用@熟悉不好看,用下面的好看些:
{foreach $myColors as $key=>$value}
<li>{$key}==>{$value}</li>
{/foreach}
。
Example 7.32. 多维数组通过item 和 key来嵌套使用{foreach}
多维数组的键一般会对应另一个数组。
<?php
$smarty->assign('contacts', array(
array('phone' => '555-555-1234',
'fax' => '555-555-5678',
'cell' => '555-555-0357'),
array('phone' => '800-555-4444',
'fax' => '800-555-3333',
'cell' => '800-555-2222')
));
?>
模板将输出$contact.
{* key always available as a property *}
{foreach $contacts as $contact}
{foreach $contact as $value}
{$value@key}: {$value}
{/foreach}
{/foreach}
{* accessing key the PHP syntax alternate *}
{foreach $contacts as $contact}
{foreach $contact as $key => $value}
{$key}: {$value}
{/foreach}
{/foreach}
上面两个例子输出结果一样。
Example 7.33. {foreachelse}的数据库例子
循环显示数据库(PDO)结果。例子是循环了一个PHP的迭代器(iterator)而不是一个数组(array)。
更多:
http://www.smarty.net/docs/zh_CN/language.function.foreach.tpl
Smarty for foreach 使用的更多相关文章
- Smarty控制foreach输出数量
最近在搞ecshop,ecshop用的是smarty.在首页中想要修改展示的商品数量,但是用的是foreach,让我无从下手,在网上找了好久终于找到解决方案. <!--{foreach name ...
- Smarty 限制foreach的循环次数
<!--{foreach from=$news item=news name=foo}--> <!--{if $smarty.foreach.foo.index <7}--&g ...
- smarty中foreach的用法举例
- smarty在循环的时候计数来显示这是第几次循环的功能
想必有很多人比较喜欢这个smarty循环的时候有个变量增加的功能或比较需要这个功能吧?其实不需要额外的变量,当然你也许根本用不了.我们用smarty内置的就可以了.就是smarty有foreach和s ...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- PHP代码审计6-实战漏洞挖掘-xdcms用户注册页面漏洞
xdcms 源码:xdcms v2.0.8 1.配置 [一直下一步(仅为测试)] #数据库账号root,密码为空:管理员账号/密码:xdcms/xdcms #登录后台 2.查看后台登录页面的配置项[x ...
- smarty foreach循环
1,smarty foreach1,单纯的数组array(1000,2000,3000),使用foreach(from = $array item=foo){$foo}2,键值对数组<ul> ...
- Smarty模板技术之foreach遍历数组实例全面讲解
一.item属性用法 <?php $arr = array(, , ); $smarty->assign('testarrg', $arr); ?> 用Smarty中的foreach ...
- smarty -- foreach用法
{foreach},{foreachelse} 用于像访问序数数组一样访问关联数组 {foreach},{foreachelse} {foreach} is used to loop over an ...
随机推荐
- Oracle 数据库基本操作——实用手册、表操作、事务操作、序列
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...
- (转)Maven实战(三)Eclipse构建Maven项目
1. 安装m2eclipse插件 要用Eclipse构建Maven项目,我们需要先安装meeclipse插件 点击eclipse菜单栏Help->Eclipse Marketplac ...
- RESTFul中的那些事(1)---在RESTFul中,HTTP Put和Patch操作的差别?
笔者在用调用Google Calendar和Google Tasks的RESTFul API的时候.遇到了一个特殊的操作,PATCH. 那么PATCH操作和PUT操作的差别是什么呢? 依据PATCH ...
- Linux crontab 命令详解(含配置文件路径)
编辑/etc/crontab 文件配置cron cron 服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服 ...
- JavaScripts学习日记——XML DTD Schema
今日关键词: XML DTD Schema 1.XML 1 XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和 ...
- javascript高级特性(面向对象)
javascript高级特性(面向对象): * 面向对象: * 面向对象和面向过程的区别: * 面向对象:人就是对象,年龄\性别就是属性,出生\上学\结婚就是方法. * 面向过程:人出生.上学.工作. ...
- ssh key报but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!错误
在/etc/hosts 文件加上对方的主机名 ip地址,可以ping通主机名即可.
- 全世界最详细的一步一步搭建RAC步骤(一)---安装操作系统RHEL4.6【weber出品】
全文搭建RAC分为3步骤 <--安装操作系统RHEL4.6> <--配置ASM+裸设备> <--安装集群软件> <--安装数据库软件> ...
- access 2007 vba (亖)
OpenReport方法执行 OpenReport 操作在 Visual Basic 中. 语法 表达式 .OpenReport(ReportName, View, FilterName, Whe ...
- PHP 函数的引用传递
$a = "nowamagic";$b =& $a;echo $b.$a; 这意味着 $a 和 $b 指向了同一个变量.同一个变量内容有不同的变量名,引用就是这么个回事. ...