如何在smarty中找到foreach循环的最后一个索引

时间:2010-06-25 12:35:12

标签: php smarty

如何在smarty中获取foreach循环的最后一个索引值,我是smarty的新用法我已经使用了这段代码但是它没有工作

{foreach from=$cityList key=myId item=i name=foo}
 {$i.location_name}{if $main_smarty.foreach.foo.last}<hr>{else}-{/if}
  {/foreach}

我想要的是,当它们是最后一个城市名称之后它的水平线,否则它就像印度 - 美国 - 日本 - 但最后它来到日本 - 中国

在.php我使用

<?php
include_once('Smarty.class.php');
$main_smarty = new Smarty;

query to find citylist
$main_smarty->assign('cityList',$cityList);
?>

6 个答案:

答案 0 :(得分:23)

你正在寻找这个:

{foreach from=$cityList key=myId item=i name=foo}
    {if $smarty.foreach.foo.last}
        <p>This is the last item from the array!</p>
    {/if}
{/foreach}

如您所见,您需要检查的属性为$smarty.foreach.foo.last,其中foo是您对象的名称。

答案 1 :(得分:4)

如果$ arr是你传递给{foreach}的数组,那么这就可以了:

{$arr|@end}

事实上,它不必在{foreach}

中调用

答案 2 :(得分:2)

{foreach from=$foo item=$bar name=foo}
    {if $smarty.foreach.foo.last}
        Total of({$smarty.foreach.foo.total}) Items <br />
        Data ({$bar})
    {/if}
{/foreach}

答案 3 :(得分:2)

我认为较新版本的Smarty有一种解决这个问题的新技术,而不是其他答案所显示的。 latest docs(在撰写本文时)的示例是使用@last - 属性。您可以这样使用它:{if $item@last}...
完整的例子:

{* Add horizontal rule at end of list *}
{foreach $items as $item}
  <a href="#{$item.id}">{$item.name}</a>{if $item@last}<hr>{else},{/if}
{foreachelse}
  ... no items to loop ...
{/foreach}

答案 4 :(得分:0)

这实际上对我有用:

{$myvar=$someArray@end}
{$myvar.someproperty}

答案 5 :(得分:0)

我的解决方案:

PHP

Array
(
    [0] => car
    [1] => toy
    [2] => cat
    [3] => gun
    [4] => dog
)

.tpl

{foreach from=$interest key=$key item=$item}
    {$item.value}{if $key < ($interest|count - 1)}, {/if} 
{/foreach}

结果

My interest: 
car, toy, cat, gun, dog