{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} 循环

  1. <ul>
  2. {for $foo=1 to 3}
  3. <li>{$foo}</li>
  4. {/for}
  5. </ul>

输出:

  1. <ul>
  2. <li>1</li>
  3. <li>2</li>
  4. <li>3</li>
  5. </ul>

Example 7.28. 使用max 属性

  1. $smarty->assign('to',10);
  1. <ul>
  2. {for $foo=3 to $to max=3}
  3. <li>{$foo}</li>
  4. {/for}
  5. </ul>

输出:

  1. <ul>
  2. <li>3</li>
  3. <li>4</li>
  4. <li>5</li>
  5. </ul>

Example 7.29. {forelse}的执行

  1. $smarty->assign('start',10);
  2. $smarty->assign('to',5);
  1. <ul>
  2. {for $foo=$start to $to}
  3. <li>{$foo}</li>
  4. {forelse}
  5. no iteration
  6. {/for}
  7. </ul>

输出:

  1. 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} 循环

  1. ?php
  2. $arr = array('red', 'green', 'blue');
  3. $smarty->assign('myColors', $arr);
  4. ?>

模板将顺序输出$myColors

  1. <ul>
  2. {foreach $myColors as $color}
  3. <li>{$color}</li>
  4. {/foreach}
  5. </ul>

Example 7.31. 使用key变量的例子

  1. <?php
  2. $people = array('fname' => 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
  3. $smarty->assign('myPeople', $people);
  4. ?>

模板将以键值对的方式输出$myArray

  1. <ul>
  2. {foreach $myPeople as $value}
  3. <li>{$value@key}: {$value}</li>
  4. {/foreach}
  5. </ul>

输出:

  1. <ul>
  2. <li>fname: John</li>
  3. <li>lname: Doe</li>
  4. <li>email: j.doe@example.com</li>
  5. </ul>

感觉用@熟悉不好看,用下面的好看些:

{foreach $myColors as $key=>$value}
<li>{$key}==>{$value}</li>
{/foreach}

Example 7.32. 多维数组通过item 和 key来嵌套使用{foreach}

多维数组的键一般会对应另一个数组。

  1. <?php
  2. $smarty->assign('contacts', array(
  3. array('phone' => '555-555-1234',
  4. 'fax' => '555-555-5678',
  5. 'cell' => '555-555-0357'),
  6. array('phone' => '800-555-4444',
  7. 'fax' => '800-555-3333',
  8. 'cell' => '800-555-2222')
  9. ));
  10. ?>

模板将输出$contact.

  1. {* key always available as a property *}
  2. {foreach $contacts as $contact}
  3. {foreach $contact as $value}
  4. {$value@key}: {$value}
  5. {/foreach}
  6. {/foreach}
  7.  
  8. {* accessing key the PHP syntax alternate *}
  9. {foreach $contacts as $contact}
  10. {foreach $contact as $key => $value}
  11. {$key}: {$value}
  12. {/foreach}
  13. {/foreach}

上面两个例子输出结果一样。

Example 7.33. {foreachelse}的数据库例子

循环显示数据库(PDO)结果。例子是循环了一个PHP的迭代器(iterator)而不是一个数组(array)。

更多:

http://www.smarty.net/docs/zh_CN/language.function.foreach.tpl

  1.  

Smarty for foreach 使用的更多相关文章

  1. Smarty控制foreach输出数量

    最近在搞ecshop,ecshop用的是smarty.在首页中想要修改展示的商品数量,但是用的是foreach,让我无从下手,在网上找了好久终于找到解决方案. <!--{foreach name ...

  2. Smarty 限制foreach的循环次数

    <!--{foreach from=$news item=news name=foo}--> <!--{if $smarty.foreach.foo.index <7}--&g ...

  3. smarty中foreach的用法举例

  4. smarty在循环的时候计数来显示这是第几次循环的功能

    想必有很多人比较喜欢这个smarty循环的时候有个变量增加的功能或比较需要这个功能吧?其实不需要额外的变量,当然你也许根本用不了.我们用smarty内置的就可以了.就是smarty有foreach和s ...

  5. PHP模板引擎Smarty内建函数section,sectionelse用法详解

    本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...

  6. PHP代码审计6-实战漏洞挖掘-xdcms用户注册页面漏洞

    xdcms 源码:xdcms v2.0.8 1.配置 [一直下一步(仅为测试)] #数据库账号root,密码为空:管理员账号/密码:xdcms/xdcms #登录后台 2.查看后台登录页面的配置项[x ...

  7. smarty foreach循环

    1,smarty foreach1,单纯的数组array(1000,2000,3000),使用foreach(from = $array item=foo){$foo}2,键值对数组<ul> ...

  8. Smarty模板技术之foreach遍历数组实例全面讲解

    一.item属性用法 <?php $arr = array(, , ); $smarty->assign('testarrg', $arr); ?> 用Smarty中的foreach ...

  9. smarty -- foreach用法

    {foreach},{foreachelse} 用于像访问序数数组一样访问关联数组 {foreach},{foreachelse} {foreach} is used to loop over an  ...

随机推荐

  1. java笔记12之面向对象初始

    1 概述 类:是一组相关的属性和行为的集合.是一个抽象的概念.     对象:是该类事物的具体表现形式.具体存在的个体. (1)面向对象思想     面向对象是基于面向过程的编程思想.         ...

  2. apply 与arguments的用法

    一个小练习: 用一个 函数来代替console.log()的功能 function log(a){ console.log.apply(null,arguments);//arguments 是传的实 ...

  3. 用js代码判断是否IE浏览器

    判断是否IE的方法: var isIE = function(ver) { var div = document.createElement("div"), status; div ...

  4. Clipboard.js : 移动端浏览器实现网页内容复制

    .bl { padding: 5px 10px; border-left: 3px solid #009a61; background: #f6f6f6; color: #555; font-size ...

  5. 3分钟学会sessionStorage用法(h5页面返回滚动到上次浏览器位置)

    前言: 因最近移动端开发过程中遇到一个运营提出的所谓技术难点需求,对于原生APP来说轻而易举,毕竟自己的APP用户操作指哪打哪,但是H5该怎么做?H5就实现不了么?对于一个爱研究攻克这些前端棘手问题的 ...

  6. SKAction类

    继承自 NSObject 符合 NSCodingNSCopyingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framewo ...

  7. 705 - Slash Maze

    By filling a rectangle with slashes (/) and backslashes ( ), you can generate nice little mazes. Her ...

  8. 如何在Ubuntu 12.04 Server 中安装图形用户界面

    root@ubuntu:~# gedit /etc/environment root@ubuntu:~# gedit /etc/profile ---------------------------- ...

  9. css布局篇

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  10. 前端CSS兼容的一些思路

    半夜睡不着觉,起来写第一博. 近段时间,公司要给一个网站产品增加一个换色功能,安排我负责该事项. 之前参与过一些定制项目,是基于该产品的二次开发,说实话里面的前端结构很混乱.所以第一步就是将html前 ...