2012-03-05 33 views
6

如何檢查foreach的當前迭代並執行某些操作?如何檢查smarty中的迭代?

{foreach $new_products as $product name=foo} 
    {if $smarty.foreach.foo.iteration=5} 
     Do it! 
    {/if} 
{/foreach} 

這總是返回未選中

+2

'{$的foreach從爲$項目} {如果$ @項迭代== 5}'是有點短... – rodneyrehm 2012-03-05 08:59:29

回答

9

我認爲你應該做{if $smarty.foreach.foo.iteration == 5}(注意==)。

+0

爲什麼雙等號?只是試圖理解,因爲===也能正常工作。 – loxyboi 2015-08-13 07:53:24

+0

@oxyboi你可以使用兩個或三個等號(三個會檢查,類型是否匹配 - 請參閱http://php.net/manual/de/language.types.type-juggling.php)。但在原來的問題中,只有一個等號,這是錯誤的。 – apfelbox 2015-08-13 09:24:46

+0

@apfelbox噢是的,我現在可以看到,沒有發現問題中的'='。以爲你指的是聰明的特定規則。謝謝! – loxyboi 2015-08-13 11:17:27

6

有一個替代方案(我認爲更新)。從Smarty docs的例子演示了好聽:

{foreach $items as $i} 
    {if [email protected] eq 3} 
    {* put empty table row *} 
    <tr><td>nbsp;</td></tr> 
    {/if} 
    <tr><td>{$i.label}</td></tr> 
{/foreach} 

注意索引從零開始,所以索引3是第四次迭代。

0

對於Smarty的3,你可以使用@iteration財產

{foreach $new_products as $product} 
    {if [email protected] == 5} 
     Do it! 
    {/if} 
{/foreach}