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. Oracle Sql Developer 连接oracle

    PL/Sql 初次使用需要配置文件内容,对于我这种Oracle新手来说各种配置有点凌乱,所以果断选择Sql Developer. 选择它是因为初次使用的时候它不用想PL/Sql那样配置文件,而只需要添 ...

  2. css处理最后一个li

    .relatebar li{width:98px;height:146px;padding:5px;float:left;border-left:1px solid #ccc;} .relatebar ...

  3. Hadoop体系结构之 Yarn

    1.1 YARN 基本架构 YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManage ...

  4. RAC修改数据库的spfile位置

    RAC修改spfile位置 [root@rac1 ~]# su - oracle [oracle@rac1 ~]$ sqlplus  / as sysdba SQL*Plus: Release 11. ...

  5. 监控mysql 脚本

    监控mysql脚本 http://oldboy.blog.51cto.com/2561410/986905

  6. 容器中跨主机的网络方案-Weave

    容器中的网络是建立docker集群的重要内容. 本文将介绍如何用Weave实现容器的多节点互通. Weave是一个开源的项目,其网站为: https://www.weave.works/ 其工作原理相 ...

  7. java图形用户界面添加图片的代码

    package com.aa; import java.awt.Component; import javax.swing.ImageIcon; import javax.swing.JPanel; ...

  8. java流类,快速统计出字符次数+++

    总结:学会给一个合适的命名,不要总是abc..虽然简单,但是不容易看懂,和方便去理解 package com.aini; import java.io.File; import java.io.Fil ...

  9. juc线程池原理(六):jdk线程池中的设计模式

    一.jdk中默认线程池中的代理模式 单例类线程池只有一个线程,无边界队列,适合cpu密集的运算.jdk中创建线程池是通过Executors类中提供的静态的方法来创建的,其中的单例类线程池的方法如下: ...

  10. ubuntu 14.04使用root登陆出现错误“Error found when loading /root/.profile”解决

    在刚修改完root权限自动登录后,发现开机出现以下提示: Error found when loading /root/.profile stdin:is not a tty ----........ ...