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

Posted

技术标签:

【中文标题】如何在 smarty 中找到 foreach 循环的最后一个索引【英文标题】:How to find last index of foreach loop in smarty 【发布时间】:2011-03-08 06:36:33 【问题描述】:

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

foreach from=$cityList key=myId item=i name=foo
 $i.location_nameif $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);
?>

【问题讨论】:

请提供更多代码,以便我们确定问题所在,您提供的 sn-p 在我看来没问题,应该可以正常工作 【参考方案1】:

如果 $arr 是您传递给 foreach 的数组,则可以解决问题:

$arr|@end

事实上,它不必在 foreach 中调用

【讨论】:

【参考方案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】:

你正在寻找这个:

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 是您的对象的名称。

【讨论】:

这里的 $smarty 是什么,我可以在那个地方使用其他东西,比如我使用 $main_smarty 在 .php 中我分配 $main_smarty->assign('cityList',$cityList); 据我所知,$smarty 是一个保留变量,您应该使用它。如果您的 php 对象名称不同,则无关紧要。你可以在这里找到更多关于$smarty的信息:smarty.net/manual/en/language.variables.smarty.php 他们还有其他方法可以找到它【参考方案4】:

这实际上对我有用:

$myvar=$someArray@end
$myvar.someproperty

【讨论】:

【参考方案5】:

我认为较新版本的 Smarty 解决此问题的技术比其他答案显示的要新。 latest docs 中的示例(在撰写本文时)正在使用 @last-property。你可以这样使用它: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

【讨论】:

【参考方案6】:

我的解决方案:

PHP

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

.tpl

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

结果

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

【讨论】:

最后一项:if $key &gt;= ($interest|count - 1)./if

以上是关于如何在 smarty 中找到 foreach 循环的最后一个索引的主要内容,如果未能解决你的问题,请参考以下文章

Smarty - foreach 循环 10 次并停止

Smarty标签运算,控制结构[if,for,foreach,section,while]

数字格式在 Smarty 的 foreach 中不起作用

Smarty foreach 不工作

Smarty

R:foreach 循环如何找到应该调用的函数?