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}
浙公网安备 33010602011771号