zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    memwatch使用简化
    memwatch检测内存泄露
    mtrace检测内存泄露
    2.14 环境变量及参数
    设计模式[索引]
    二叉树遍历
    AppCan 双击返回按钮退出应用
    MySQL语句相关经验总结
    mysql连接失败或出现“Too many connections”错误
    让IE的Button自适应文字宽度兼容
  • 原文地址:https://www.cnblogs.com/youxin/p/3556601.html
Copyright © 2011-2022 走看看