• 热门专题

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

作者:  发布日期:2013-04-12 21:38:03
Tag标签:Smarty模板  foreach  遍历数组  
  • 今天来介绍一下关于foreach的实例,加深大家对foreach的掌握程度。

    一、item属性用法

    <?php
    $arr = array(600, 851, 7412);
    $smarty->assign('testarrg', $arr);
    ?>

    用Smarty中的foreach方法来遍历并输出这个数组

    <dl>
    <dt>foreach中item属性用法</dt>
    {foreach from=$testarrg item=test}
    <dd>{$test}</dd>
    {/foreach}
    </dl>

    通过上面的将输出:

    <dl>
    <dt>foreach中item属性用法</dt>
    <dl>600</dl>
    <dl>851</dl>
    <dl>7412</dl>
    </dl>

    二、关于item和key属性的演示

    <?php
    $arr = array(1 => 'test1', 2 => 'test2', 3=> 'test3');
    $smarty->assign('testarray', $arr);
    ?>

    上面的实例是按照数组的键/值对形式的

    用模板按键名/键值对的形式输出$testarray, 类似于PHP的foreach。

    <dl>
    <dt>foreach中item和key属性用法</dt>
    {foreach from=$testarray key=key item=value}
    <dd>{$key}: {$value}</dd>
    {/foreach}
    </dl>

    上面的例子中将输出:

    <dl>
    <dt>foreach中item和key属性用法</dt>
    <dd>1: test1</dd>
    <dd>2: test1</dd>
    <dd>3: test2</dd>
    </dl>

    三、关于{foreach}中的item属性是关联数组的演示案例

    <?php
    $test_list=array(10=>array('a'=>1256, 'b'=>'testok'),
    11=>array('a'=>8959, 'b'=>'oktest'));
    $smarty->assign('arr_item', $test_list);
    ?>
    在TPL模板中写入foreach循环的方法
    <ul>
    {foreach from=$test_list key="key" item="val"}
    <li>{$val.a}: {$val.b}</li>
    {/foreach}
    </ul>
    上例将输出:

    <ul>
    <li>1256: testok</li>
    <li>8959: oktest</li>
    </ul>

    四、{foreach}使用嵌套的item和key

     

    Assign an array to Smarty, the key contains the key for each looped value.

    向Smarty设置一个数组,对于每个键名对应的每个循环值都包括键。
    <?php
    $_arrg=array(array('photo'=>100, 'phfax'=>200, 'phcell'=>300),
    array('phone'=>'Hello', 'fax'=>'Word', 'cell'=>'Hess'));
    $smarty->assign('arrg', $_arrg);
    ?>

    用foreach向输模板中输出

    {foreach name="outgow" item="ct" from=$arrg}
    <hr />
    {foreach key="keys" item="ims" from=$arrg}
    {$keys}: {$ims}<br />
    {/foreach}
    {/foreach}

    上例将输出:

    <hr />
    photo: 100<br />
    phfax: 200<br />
    phcell: 300<br />
    <hr />
    phone: Hello<br />
    fax: Word<br />
    cell: Hess<br />

    五、关于foreach的属性index的用法

    {* 三行就输出一次头部 *}
    <table width="500" boder="1">
    {foreach from=$items key=myId item="is" name="fot"}
    {if $smarty.foreach.fot.index % 3 == 0} //除3余数0
    <tr><th>文章标题</th></tr>
    {/if}
    <tr><td>{$is.label}</td></tr>
    {/foreach}
    </table>

    六、关于foreach的属性iteration的用法

    iteration显示当前循环次数,它和index属性不同,它是每次从1开始,每次循环增长1。 www.it165.net

    {foreach from=$myArray item=i name=foo}
    {$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
    {/foreach}

    七、关于foreach的属性first的用法

    first属性在foreach循环第一次执行时返回真

    {* 对于第一个条目显示LATEST而不是id *}
    <table>
    {foreach from=$items key=myId item=i name=foo}
    <tr>
    <td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td>
    <td>{$i.label}</td>
    </tr>
    {/foreach}
    </table>

    八、关于foreach的属性last的用法

    lase属性在foreach循环最后一次执行时返回真

    {* 在列表结束时增加一个水平标记 *})
    {foreach from=$items key=part_id item=prod name=products}
    <a href="#{$part_id}">{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if}
    {foreachelse}
    ... content ...
    {/foreach}

    九、关于foreach的属性show的用法

    show属性返回的是一个布尔值,当它为真(ture)的时候,该循环就显示,它不为假(false)的时候该循环就不显示。

    这是一个相对比较全面的Smarty中Foreach循环的实例,整理给大家希望对大家有用!


About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规