あなたは
{foreach from=$foo item=bar name=humbug}
{$smarty.foreach.humbug.index}
{$smarty.foreach.humbug.iteration}
{/foreach}
最初の列はインデックス結果であるインデックスと繰り返しオプションを持つ配列です$ fooの通ると仮定すると、2番目の列は、反復の結果はある
0 - 1
1 - 2
2 - 3
3 - 4
4 - 5
これは、インデックスが配列インデックスとして0から始まることを意味します。ここで、反復は1で始まるループ反復カウントです。
誤った値を使用すると問題が発生する場合は、4行またはそれ以外の量の行をテーブルに表示することがあります。
インデックスを使用すると、ひどくレイアウトされたテーブルが作成されます。ループの最初の反復(インデックス0)で、5回目の反復(インデックス4)で修正されますが、現在のレイアウトのスコープ内でのみ行の変更が行われます。つまり、最初の行には1つのセルしかありませんそれ。 1行おきに4つのセルがあり、最初の行の後のすべてのセルのデータは、それが実行すべきであるよりも遅く表4のセルに表示されます。 反復を使用
{if $smarty.foreach.humbug.index is div by 4}
</tr><tr>
{/if}
が正しく最後の反復またはforeachループまで4の同じ行を与える行の変更をレイアウトになります。
{if $smarty.foreach.humbug.iteration is div by 4}
</tr><tr>
{/if}
foreachループの後、最終行を完成させるために単にテーブル行を追加するだけです。
私はこれが誰かを助けることを願っています。
しかし、あなたは、foreachループから 'index'を取得するので、実際にはちょうど1つのみであることを意味しますか? – mario
@marioええ、それは私が欲しいものです。 – alex
また、インデックスの代わりに '{counter start = 1}'を使うこともできます。 – mario