smartyで配列を繰り返して表示するときは、foreachを使います。
foreachで繰り返した回数を取得するには、foreachに名前をつけて利用します。
現時点での1から始まるループ回数を表示したいときはiteration
foreach内のループ回数をカウントしたいとき、1から始まる数字で取得したい場合は、foreachに名前をつけ、iterationを利用します。
たとえば、ループ回数が1回目なら1、2回目なら2を表示します。
解説
{foreach from=$array item='item' name='ループ名'} {$smarty.foreach.ループ名.iteration} {/foreach}
まず、name='ループ名'でループ名を設定します。
ループ名を設定したforeachの中で{$smarty.foreach.loop.iteration}
と記述すると、1から始まるループ回数を表示できます。
サンプル
<ul> {foreach from=$array item='item' name='loop'} <li>{$smarty.foreach.loop.iteration}:{$item}</li> {/foreach} </ul>
現時点での0から始まるループ回数を表示したいときはindex
foreach内のループ回数をカウントしたいとき、0から始まる数字で取得したい場合は、foreachに名前をつけ、iterationを利用します。
たとえば、ループ回数が1回目なら0、2回目なら1を表示します。
解説
{foreach from=$array item='item' name='ループ名'} {$smarty.foreach.ループ名.index} {/foreach}
まず、name='ループ名'でループ名を設定します。
ループ名を設定したforeachの中で{$smarty.foreach.loop.index}
と記述すると、0から始まるループ回数を表示できます。
サンプル
<ul> {foreach from=$array item='item' name='loop'} <li>{$smarty.foreach.loop.index}:{$item}</li> {/foreach} </ul>
nameの設定されたforeachのトータルのループ回数を取得するにはtotal
foreach内のトータルのループ回数を取得したいときは、totalを利用します。
たとえば、配列に3件のデータが格納されている場合は、3を表示します。
※なお、トータル回数はforeachを抜けた後でも表示することができます。
foreachより前では利用できません。
{$smarty.foreach.loop.total}件のデータがあります。{* 合計回数を表示できません。 *} <ul> {foreach from=$array item='item' key='key' name='loop'} <li>{$key}:{$item}</li> {/foreach} </ul> {$smarty.foreach.loop.total}件のデータがあります。{* 合計回数を表示できます。 *}
参考URL
- smarty:{foreach},{foreachelse}
- forWEB屋:Smartyのforeachでループ内のカウント