ここではSmartyのsection関数を解説していきます。
基本構文
{section name=i loop=5} {$smarty.section.i.index}、 {/section}
出力結果は「0、 1、 2、 3、 4、」 になります。
name=i
sectionに名前をつけて使用します。
loop=5
ループする回数を指定します。
初期値を設定する
{section name=i start=1 loop=5} {$smarty.section.i.index}、 {/section}
出力結果は「1、 2、 3、 4、 」 になります。
ステップを設定する
{section name=i start=1 loop=10 step=2} {$smarty.section.i.index}、 {/section}
出力結果は「1、 3、 5、 7、 9、 」 になります。
ステップに逆順を設定する
{section name=i loop=10 step=-2} {$smarty.section.i.index}、 {/section}
出力結果は「9、 7、 5、 3、 1、 」 になります。
配列を渡しループさせる
php
<?php $data = array(1,2,3,4,5,6,7,8,9); $smarty->assign('data', $data);
tpl
{section name=i loop=$data} {$data[i]}、 {/section}
出力結果は「1、 2、 3、 4、 5、 6、 7、 8、 9、 」になります。
連想配列を渡しループさせる
php
<?php $data = array( array( name => 'Tanaka', tel => '000-0000-0000' ), array( name => 'Yamada', tel => '111-1111-1111' ), ); $smarty->assign('data', $data);
tpl
{section name=i loop=$data} <p> {$data[i].name}<br /> {$data[i].tel}<br /> </p> {/section}
出力結果
<p> Tanaka<br /> 000-0000-0000<br /> </p> <p> Yamada<br /> 111-1111-1111<br /> </p>
$data[i][‘name’]とはアクセスできずエラーになってしまうので注意してください。