次のような配列を受け取るとする。
... $list = ['たまねぎ','にんじん','じゃがいも']; $smarty->assign('list', $list); $smarty->display('test.tpl');
スラッシュで区切って並べることにする。
ループで回して単純に後に置くと、最後に余計な文字が残ってしまう。
{foreach from=$list item=item} {$item|escape}/ {/foreach}
たまねぎ/ にんじん/ じゃがいも/
そこで、最後の要素でなければ後に置く。
{foreach from=$list item=item name=loop_name} {$item|escape}{if not $smarty.foreach.loop_name.last}/{/if} {/foreach}
たまねぎ/にんじん/じゃがいも
あるいは最初の要素でなければ前に置く。
{foreach from=$list item=item name=loop_name} {if not $smarty.foreach.loop_name.first}/{/if}{$item|escape} {/foreach}
たまねぎ /にんじん /じゃがいも
{foreach}内の改行がスペースに変換され余計な空白が入る。ただし{/if}の後では起きない。 最初の要素でなければ前に置くのように、行末が{/if}で終わらない場合は、改行しないでつなげる。
{foreach from=$list item=item name=loop_name}{if not $smarty.foreach.loop_name.first}/{/if}{$item|escape}{/foreach}