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 則傳回 該循環的總循環次數