您的位置:首页 > 其它

Smarty foreach 循环次数 首次 末次

2012-05-30 17:38 232 查看
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}。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: