smarty3 foreach与section
foreach可以访问关联数组,section只能访问索引数组。
smarty foreach相关属性详解
{foreach from=$myarray key="mykey" item="myitem"}
{foreach $contact as $key => $value}
{$key}: {$value}
{/foreach}
{foreach $myPeople as $value}
<li>{$value@key}: {$value}</li>
{/foreach}
name
{foreach $arry as $key=>$value name=foo}
<li {if $smarty.foreach.foo.index == 1} style="color:red" {/if}>{$value@key} : {$value}</li>
{/foreach}
@index 获取当前循环的索引值,从0开始.
{foreach $arry as $key=>$value name=foo}
<li {if $value@index eq 1} style="color:red" {/if}>{$value@key} : {$value}</li>
{/foreach}
@iteration 获取循环发生的次数,从1开始计数,区别于index,每循环一次会自增一次
{foreach $arry as $key=>$value name=foo}
<li {if $value@iteration==2} style="color:red" {/if}>{$value@key} : {$value}</li>
{/foreach}
@first 循环第一次
{foreach $arry as $key=>$value name=foo}
<li {if $value@first} style="color:red" {/if}>{$value@key} : {$value}</li>
{/foreach}
@last 循环最后一次新的foreach语法
{foreach $arry as $key=>$value name=foo}
<li {if $value@last} style="color:red" {/if}>{$value@key} : {$value}</li>
{/foreach}
section属性
name:(必选) 是section循环的名称只是标示循环唯一的名字没有特别意义,前面没有$符号;
loop: (必选)是在php声明中的变量名称,用来标示是循环哪一个数组(即要循环数组名)需要使用$;
start: (可选)循环执行的初始位置. 如果该值为负数,开始位置从数组的尾部算起. 例如:如果数组中有7个元素,指定start为-2,那么指向当前数组的索引为5. 非法值(超过了循环数组的下限)将被自动调整为最接近的合法值.
step: (可选)如其它语言的循环,是一个步长,如果为负数,则倒序循环;
max:(可选)循环的最大下标,如果是1则只循环1次,如果为2则循环2次;
show:(可选)默认为true即显示。如果设置了{sectionelse}。表示如果数组没有内容的时候显示这部分的内容;如果show为false则显示这部分。如果没有设置{sectionelse}则不输出该数组。
index:用于显示当前循环的索引,从0开始(如果指定了start属性,那么由该值开始),每次加1(如果指定了step属性,那么由该值决定).如果没有指定step和start属性,此值的作用和iteration类似,只不过从0开始而已.
{section name=len loop=$arry11}
<div {if $smarty.section.len.index==0}style="color:red"{/if}>id: {$arry11[len]}</div>
{/section}
iteration:用于显示循环的次数.iteration 不像index属性受start、step和max属性的影响,该值总是从1开始(index是从0开始的).rownum 是iteration的别名,两者等同.
{section name=len loop=$arry11 start=0 step=1 max=3 }
<div {if $smarty.section.len.iteration==1}style="color:red"{/if}>id: {$arry11[len]}</div>
{/section}

浙公网安备 33010602011771号