如何在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);
?>
答案 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)
我的解决方案:
Array
(
[0] => car
[1] => toy
[2] => cat
[3] => gun
[4] => dog
)
{foreach from=$interest key=$key item=$item}
{$item.value}{if $key < ($interest|count - 1)}, {/if}
{/foreach}
My interest:
car, toy, cat, gun, dog