foreach and  foreachelse篇

foreach用于遍历数组,可以是非关联数组,与section相比要简单些,在smarty3中可以接受没有名称的属性,也可以使用smarty2有名称的属性。与{section}*(只能循环连续的索引数组)相比较,{foreach}可以做任何{section}可以做到的因此也推荐使用{foreach}

  • 可以嵌套循环
  • 当foreach的值为空时,进行foreachelse运行
  • 属性:
    @index  是当前数组索引,从0开始计算。
    @iteration  是当前循环的次数,和index不同,他从 1 开始,在每次循环都会加1。
    @first 当循环{foreach}是首次循环时,first将为TRUE
    @ last  当{foreach}循环到了最后一次时, last将为TRUE
    @show
    @tottal 是整个{foreach}循环的次数。 total可以在{foreach}内部,或者之后使用
  • 语法命令:{break}终止循环, {continue}将跳过当前本次循环并进入下一次循环
  • 代替指定的 key 变量,可以通过{item@key}来使用当前循环的key
{foreach $arrayvar as $itemvar}

{foreach $arrayvar as $keyvar=>$itemvar}
 
{foreach from=$foreach_else  item=first_loops_element name=first_loops_name key=fisrt_loops_key}

{foreach} example

index.php:
$foreach_else = array(
'first_layout1' => array('second_layout1'),
'first_layout2' => array('second_layout2'),
'first_layout3' => array('second_layout3')
);
$res = array();
foreach.tpl: {foreach $foreach_else as $item}
第一次循环的键值:{$item@key}
<br>
{foreach $item as $value}
进入第二次循环:{$value@key}=>{$value}
<br>
{foreachelse}
this is the loop end
{/foreach}
{/foreach}
{foreach $res as $r}
{$r.id}
{$r.name}
{foreachelse}
.. no results ..
{/foreach}

then the result:
第一次循环的键值:first_layout1
进入第二次循环:0=>second_layout1
第一次循环的键值:first_layout2
进入第二次循环:0=>second_layout2
第一次循环的键值:first_layout3
进入第二次循环:0=>second_layout3

如果循环一个迭代器的话,比循环一个数组快。

@index
{foreach $connect_arr as  $item}  
  {if $item@index eq 3}      
  输出 :{$item}    {/if}  
  {foreachelse} 
   数组的索引小于 3
{/foreach}
 
@iteration
 
index.php: 
$num_count = array(1, 2, 3, 4, 5, 6);
 
tpl.tpl
{foreach $num_count as $name}
    {if $name@iteration is div by 4}
        <b>{$name@iteration}</b>
    {/if}
    {$name}
{/foreach}
 
 
//is even/odd by 可以用于奇偶交错
$num_count = array(1, 2, 3, 4, 5, 6,7,8,);
{foreach $num_count as $name}
    {if $name@iteration is even by 3}
        <b>{$name}</b>
        {else}
        {$name}
    {/if}
{/foreach}
 
 
 

Smarty3——foreach的更多相关文章

  1. Smarty3学习笔记

    Smarty3 笔记 By 飞鸿影~ -- :: Smarty入门 1.什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离, 使php程序员只 ...

  2. smarty3.0中文手册文档API及使用指南

    1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...

  3. Smarty3配置及入门语法

    一.Smarty3配置 下载Smarty文件 在Smarty的官方网站下载Smarty文件,解压下载到的Smarty文件,Smarty的库文件就在libs文件夹中. 我使用的PHP调试环境的程序集成包 ...

  4. Smarty标签运算,控制结构[if,for,foreach,section,while]

    Smarty标签运算: 在页面上做简单的运算[temp5.html] 条件判断if 循环结构 for foreach用得比较多,foreach例子从数据库取出的数据 section功能和foreach ...

  5. 8. Smarty3:模版中的内置函数

    smarty3中对内置函数的修改比較大,加入了很多新的功能:变量声明.表达式,流程控制,函数.数组等.可是建议不要在模版中去使用过于复杂的逻辑,而是要尽量将一些程序设计逻辑写到PHP中,并在模版中採用 ...

  6. 先说IEnumerable,我们每天用的foreach你真的懂它吗?

    我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正 ...

  7. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  8. 浅谈JavaScript中forEach与each

    forEach是ES5中操作数组的一种方法,主要功能是遍历数组,例如: var arr = [1,2,3,4]; arr.forEach(alert); 等价于: var arr = [1, 2, 3 ...

  9. 《ES6基础教程》之 map、forEach、filter indexOf 用法

    1,map,对数组的每个元素进行一定操作,返回一个新的数组. var oldArr = [{first_name:"Colin",last_name:"Toh" ...

随机推荐

  1. LeetCode Construct Binary Tree from String

    原题链接在这里:https://leetcode.com/problems/construct-binary-tree-from-string/description/ 题目: You need to ...

  2. git撤销各种状态下的操作

    使用Git时会出现各种各样的问题,下面是几种情况下怎么反悔的操作 一,未加入缓存区,撤销文件修改 git checkout -- file 二,已加入缓存区,撤销文件提交 git reset HEAD ...

  3. 在vue项目中正确的引入jquery和bootstrap

    <script>标签引入jquery在vue脚手架里并不适用,需要利用webpack引入jquery 一.第一种方法 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jq ...

  4. 转:django中session的实现机制

    转:www.jianshu.com 要理解session,首先要搞清楚cookie的概念.由于http是无状态的,服务器不能记住用户的信息状态,因此若由同一个客户端发起的多条请求,服务器不能辨别这些请 ...

  5. egg 使用手记(一)

    1. 文件加载规则 引用官方的说法: 框架在加载文件时会进行转换,因为文件命名风格和 API 风格存在差异.我们推荐文件使用下划线,而 API 使用驼峰.比如 app/service/user_inf ...

  6. datasnap的初步

    datasnap的初步-回调函数 服务器端 TServerMethods1 =class(TComponent) private { Private declarations } public { P ...

  7. laravel 中使用定时任务

    Laravel5.3 Artisan Console 文档地址 http://laravelacademy.org/post/6228.html 1.在服务器上查看定时任务有哪些crontab -e ...

  8. sql server中类似oracle中decode功能的函数

    sqlserver 2008 写法 select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL ' THEN '国家重点' ' THE ...

  9. c++ 浅谈 new 的使用

    实例用法: 创建对象: class U_Ptr smart; U_Ptr* ptr = new U_Ptr(); class U_Ptr smart(new U_Ptr(p)); int *p = n ...

  10. MySQL-事务的实现-redo

    MySQL中事务: 事务的实现:      ACID: 原子性(A : Atomicity) 一致性(C : consistency ) 隔离性(I : isolation) 持久性(D : dura ...