Smarty foreach 循环次数 首次 末次

来源:互联网 发布:淘宝会员修改身份认证 编辑:程序博客网 时间:2024/04/28 18:24
foreach,foreachelse

{foreach from=$variable key=key name=name iteam=value}    {$variable|@count}     // 获取数组长度    {$smarty.foreach.loop.iindex}    // 获取当前循环数组元素下标,以0开始    {$smarty.foreach.loop.iteration}    // 获取当前循环次数,以1开始    {$smarty.foreach.loop.first}    // 为true时,标记循环第一次执行    {$smarty.foreach.loop.last}    // 为true时,标记循环最后一次执行 {$smarty.foreach.name.last}    // 为true时,标记循环最后一次执行    {$smarty.foreach.loop.show}    // 当前是否显示    {$smarty.foreach.loop.total}    // 循环次数{/foreach}


_______________________

 
Smarty中如何获取数组的长度:

前提假设:分配了一个数组array给Smarty,假设Smarty的分界符为'{' 和'}'。在很多资料上都看到,在Smarty中要求数组的长度时,可以用在数组后便加|count的方法调用。即通过{array|count}获得 array的长度。但是今天在写模板时,发现这样得不到数组的长度,而只是得到一个返回的字符串Array。也就是说仅仅是返回了{array}的结果,而没有返回其array的长度。

查看smarty\plugins文件夹,发现并没有count的相关方法,也就是说,count是直接调用了php中的方法。后来通过网络上的资料,发现可以在count前面加@,从而正确的获取数组的长度。

再进一步查看Smarty的源码,发现Smarty对属性调节器后边的方法名进行处理时,会对前边加@的进行特殊处理。因此作出判断:在Smarty中的属性调节器中调用php中定义好的函数时,可以通过加@来表示。

对类型为数组的方法进行测试时,发现不加@符号都会出错。比如:要对一个数组调用count方法求出数组的长度,就可以这样调用{array|@count}, 而要对数组调用end方法得出数组的最后一组数据时,则可以通过{array|@end}。