myb design

Sifter reference / LOOP, FOR

配列変数の内容をすべて表示するには、LOOPを使用します。
指定回数分繰り返し処理を行うには、FORを使用します。
LOOPはPHP/Perlのforeach文、FORはPHP/Perlのfor文に似ています。

書式

<!--@LOOP(変数名)-->

[<!--@ELSE-->]

<!--@END_LOOP-->

または

<!--@FOR(開始値,終了値[,増分値])-->

<!--@END_FOR-->

LOOPでは、配列変数の要素数が「#変数名_count」、現在のインデックス値が「#変数名_index」という特殊な変数にセットされます。
また、ELSEを使用して、指定した配列変数の内容が空の場合に出力する内容を設定することができます。

FORでは、現在の値が「#value」という特殊な変数にセットされます。
また、増分値を省略した場合は、開始値<終了値なら1、開始値>終了値なら-1になります。


変数の設定:

[ PHP | Perl | Ruby | Python ]
// PHP
$members = array(
  array('name'=>'Peavy' , 'instr'=>'bass'   ), 
  array('name'=>'Victor', 'instr'=>'guitars'), 
  array('name'=>'Andre' , 'instr'=>'drums'  ), 
);
$template->set_var('members', $members);
$template->set_var('no_members', array());

テンプレート:

There are {#members_count} members:
<!--@LOOP(members)-->
{#members_index+1}: {name} plays {instr}.
<!--@END_LOOP-->

<!--@LOOP(no_members)-->
{#no_members_index+1}: {name} plays {instr}.
<!--@ELSE-->
There are no members!
<!--@END_LOOP-->

<!--@FOR(3,1,-1)-->
count {#value}
<!--@END_FOR-->

実行結果:

There are 3 members:
1: Peavy plays bass.
2: Victor plays guitars.
3: Andre plays drums.

There are no members!

count 3
count 2
count 1