zoukankan      html  css  js  c++  java
  • Smarty3——foreach

    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}
     
     
     
  • 相关阅读:
    MatOfPoint作为minAreaRect的参数总是报错"throw new IllegalArgumentException("Incomatible Mat");
    !! Android developer 最新国内镜像
    下载安装和OpenCV匹配的Android开发环境
    Android View的onTouchEvent和OnTouch区别
    org.opencv.android.JavaCameraView 摄像机方向的问题
    C语言 · 数字三角形
    C语言 · Torry的困惑(基本型)
    C语言 · 高精度加法
    C语言 · Anagrams问题
    C语言 · 字符串对比
  • 原文地址:https://www.cnblogs.com/webph/p/6518416.html
Copyright © 2011-2022 走看看