Perlプログラムに関する各種メモ書き

【Template-Toolkit】で[FOREACH]の繰り返し回数を取得する

Template-Toolkit(以下TT)での

一般的なループのさせ方は

[%FOREACH value=loop%]
 名前は:[%value.name%]です。
[%END%]

このループのループ回数を利用して何か処理をしたい場合は予約オブジェクト「loop」というのが使用できる。

 loop.size  リストの要素数

 loop.max  最後の要素のインデックス (size - 1)

 loop.index  0からmax()のうちの、現在の繰り返し処理のインデックス

 loop.count  1からsize()のうちの、現在の繰り返し処理のカウント(index() + 1)

 loop.first  現在の処理が一番最初の処理であれば真

 loop.last  現在の処理が一番最後の処理であれば真

 loop.prev  リストのうち、一つ前のアイテムを返す

 loop.next  リストのうち、一つ次のアイテムを返す

では、この変数を用いて「3回繰り返すごとに改行タグを入れる」といった

処理はどう行うかというと

[%FOREACH value=loop%]
 名前は:[%value.name%]です。
  [%IF (loop.count mod 3)==0 %]<br>[%END%]
[%END%]

※注意

○  [%IF (loop.count mod 3)==0 %]
×  [%IF (loop.count%3)==0 %]

なので注意。

関連エントリー

No.299
02/01 10:43

edit

TemplateToolkit