天天看点

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 则返回 该循环的总循环次数