section 循环 ( 只对索引数组有作用)
<?php
$art = array(
array(
'name' => 'superman' ,
'sex' => 'm' ,
'age' => 26
) ,
array(
'name' => 'goodBoy' ,
'sex' => 'm' ,
'age' => 27
)
);
?>
section
{section show=true name=cus loop=$testSection2}
name : {$testSection2[cus].name}
sex : {$testSection2[cus].sex}
age : {$testSection2[cus].age} <br/>
{/section}
常见属性
name : (该循环的名称?)《《- 手册里的说明 , 是翻译的抽象还是我的理解力抽象? name 其实就是索引号,每次循环都获取该元素的下标值
loop : 目标数组
start : 设置循环起始下标,(设置1 就从下标 1开始获取数组的元素)
step:递增的设置 即 step=2 设置后 每次回递增 2 也是只获取 0 2 4 6 下标下的元素
max:循环的最大次数 设1 后 有100个元素 也只循环1次
show:是否执行该循环 默认 true 设false就不执行该循环(或不显示循环结果)
foreach
$art2 = array(
array(
array(
'phone' => 13333 ,
'fax' => '555-5555',
'cell' => '000-1111'
) ,
array(
'phone' => 18888 ,
'fax' => '666-6666',
'cell' => '111-2222'
)
)
);
为了练习,在便利上面的数组时结合了 section
{section name=cus loop=$testForeach}
{section name=cus2 loop=$testForeach[cus]}
{foreach key=key item=item from=$testForeach[cus][cus2]}
{$key} : {$item} <br/>
{/foreach}
<hr/>
{/section}
{/section}
foreach 循环关联数组,通常没有计数器,所以通常在列表序列时 都会定义一个变量 并且每循环一次都递增变量来当作计数器。
而且与时我们还需要在循环中去判断 是否是第一次循环 如果是就做相应的操作 和 是否是最后一次循环 如果是 也做相应的操作
虽然写起来兵符麻烦,但是smarty 提供了更方便的操作方法 如下实例代码
$tpl -> assign('testForeach' , array(
'张三' => array('age' => 25 , 'sex' => '男') ,
'王五' => array('age' => 30 , 'sex' => '男') ,
'小花' => array('age' => 28 , 'sex' => '女')
));
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
{foreach name=myname1 item=value key=key from=$testForeach}
{if $smarty.foreach.myname1.first}
<tr>
<td colspan="4" align="center">开始循环</td>
</tr>
{/if}
<tr align="center">
<td>{$smarty.foreach.myname1.iteration}</td>
<td>{$key}</td>
{foreach name=myname2 item=value2 from=$value}
<td>{$value2}</td>
{/foreach}
{if $smarty.foreach.myname1.last}
<tr>
<td colspan="4" align="right">共有 {$smarty.foreach.myname1.total} 位学生</td>
</tr>
{/if}
</tr>
{/foreach}
</table>
使用 $smarty 的变量 foreach
1:$smarty.foreach.【myname1】.【first】
myname1 是循环的foreach 名是针对 foreach name=myname1 这个循环进行操作
first 则返回一个布尔值,如果该循环正在处于第一次循环阶段 则返回 true
2:$smarty.foreach.myname1.【iteration】
iteration 你可以把他看做成计数器 也就是 for循环的 i
3:$smarty.foreach.myname1.【last】
last 是 first 的相反 如果是最后一次循环 就返回 true
4:$smarty.foreach.myname1.【total】
total 则返回 该循环的总循环次数