2012-03-05 4 views
6

foreachの現在の繰り返しを確認して何かできますか?スマートで反復をチェックする方法は?

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

これは、常に私はあなたが{if $smarty.foreach.foo.iteration == 5}を(==に注意)やるべきだと思う

+2

@iterationプロパティを使用することができます... – rodneyrehm

答えて

9

をチェックしていない返します。

+0

なぜ二重の等号?ちょうど===はうまく動作するので、理解しようとしています。 – loxyboi

+0

@loxyboiあなたは2つまたは3つの等号を使用することができます(3つがチェックされ、そのタイプも一致します - http://php.net/manual/de/language.types.type-juggling.phpを参照)。しかし、元の質問には1つだけ等号があり、間違っています。 – apfelbox

+0

@apfelboxああええ、私は今、それを見つけることができませんでした。スマートな特定のルールを指していたと思っていました。ありがとう! – loxyboi

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は、第4回の繰り返しです。 Smartyの3のために

0

{反復@ $アイテムが== 5場合} `少し短くなって、あなたは、{$アイテムとしてからのforeach $}`

{foreach $new_products as $product} 
    {if [email protected] == 5} 
     Do it! 
    {/if} 
{/foreach} 
関連する問題