天天看點

Smarty 循環語句

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