在smarty中从数组中获取最后N个元素

时间:2014-02-17 12:58:41

标签: php smarty

如何在smarty中获取php数组的最后7个元素? 我编写代码来获取最后一个元素

      {foreach from=$results item=result name=forsmart}
                                        {if $smarty.foreach.forsmart.last}
                                           {$result->getAvgtimeonpage()|date_format:"%M :%S"}
                                        {/if}
                                    {/foreach}

如何获得最后7个元素?

最诚挚的问候,谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

关于MarkS答案,您不必指定计数器。 Smarty有一个内置的总数。

{foreach from=$results item=result name=forsmart}
       {if $smarty.foreach.forsmart.iteration > ($smarty.foreach.forsmart.total - 7)}
             {$result->getAvgtimeonpage()|date_format:"%M :%S"}
       {/if}
{/foreach}

答案 1 :(得分:1)

在您的foreach中:

1)Assignt counter:

{assign var=toShow value=(($results|@count) - 7)}

2)显示索引大于计数器的项目:

 {foreach from=$results item=result name=forsmart}
       {if $smarty.foreach.forsmart > $toShow}
             {$result->getAvgtimeonpage()|date_format:"%M :%S"}
       {/if}
{/foreach}

for for循环:

1)分配循环分隔符

{assign var=maxCount value=(($results|@count)}
{assign var=toShow value=($maxCount - 6)}

2)循环滚动:

{for $i=$toShow to $maxCount}
    {$results[i]->getAvgtimeonpage()|date_format:"%M :%S"}
{/for}

很抱歉,如果我做了任何拼写错误,但我希望你能得到这个想法。

答案 2 :(得分:0)

你可以试试这个

$arrayLength = count($results);
for ($i = $arrayLength-7; $i < $arrayLength; $i++) {
    ...
}

我编辑我的帖子以提供聪明的代码

{assign arrayLength = {$results|@count}}
{for $i=$arrayLength-1 to $arrayLength}
    ...
{/for}