入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Smarty foreach 循环次数 首次 末次

创建时间:2012-05-30 投稿人: 浏览次数:12694
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的长度。

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

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

对类型为数组的方法进行测试时,发现不加@符号都会出错。比如:要对一个数组调用count方法求出数组的长度,就可以这样调用{array|@count}, 而要对数组调用end方法得出数组的最后一组数据时,则可以通过{array|@end}。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。