2012.12.7 smarty中section和foreach循环区别

smarty的的foreach在我的实际开发中比较常用,主要用于列表生成,因为数据的查询结果多以数组形式返回,相比section,foreach灵活的数组应用在smarty中非常好用,建议大家使用 foreach,并且了解其特性,例如,循环次数统计,没有循环时执行的操作,后两者使用,相信很少有人注意到

用{section}可以这样,只要改变loop的值就可以改变值变量范围!
相当与php 的for ()循环,

{section loop=10000 name=a}
{$smarty.section.a.iteration} {* iteration属性并不受start 与step的影响*}
{/section}

{section loop=10000 name=a start=1 step=2}
{$smarty.section.a.index}
{/section}

foreach主要是用来针对关联数据,比较适用用于列表生产。仅能用于数组,PHP5后可以遍历对象,使用范围自然会比for小了。

section 的使用范围要更广范

举几个例子:
一、
$name=array('one','tow','three','four');

foreach输出
<{foreach item=item from=$name}>
<{$item}>
<{/foreach}>
结果
one tow three four

section输出
<{section name=name loop=$name}>
<{$name[name]}>
<{/section}>
结果one tow three four

二、
$name=array('a'=>'one','b'=>'tow','c'=>'three','d'=>'four');
这种情况下,用foreach可以输出正常
用section没有输,这就是说,section在处理一维数组是,不能处理带非数值索引的
例:可以处理array('a','b'),array(1=>'a',2=>'b'),不能处理array('a'=>'a','b'=>'b')这样的

三、
$name=array(array('title'=>'a','body'=>'b'),array('title'=>'c','body'=>'d'));
以下都可以输出
<{foreach key=key item=item from=$name}>
<{$item.title}><br>
<{/foreach}>
<{section name=name loop=$name}>
<{$name[name].title}>
<{/section}>

四、
$name=array(array('a','b'),array(‘c','d'));
以下都 可输出
<{foreach key=key item=item from=$name}>
<{$item.0}><br>
<{/foreach}>
<{section name=name loop=$name}>
<{$name[name].0}>
<{/section}>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值