
Smartyでループさせたときに
文字列を連結させたいことがあったので
やり方の覚書です。
Smartyだとこんな感じ
{section name=value loop=$array}
{assign var=str value=$str|cat:$array[$value]}
{/section}
Smartyで【cat】を使います。
【cat】は文字列にパラメータで指定した文字列を連結します。
使い方
{$変数名|cat[:連結する文字列]}
【追記】
$array = array("東京", "名古屋", "大阪", "福岡");
上記のような配列をそのまま文字を連結すると、
東京名古屋大阪福岡
なので、間に「,」を入れるようにするには
{section name=value loop=$array}
{if $smarty.section.value.first}
{assign var=name value=$arry[$value]}
{else}
{assign var=name value=","|cat:$arry[$value]}
{/if}
{assign var=str value=$str|cat:$name}
{/section}
ループの1回目だけそのまま変数に代入して
2回目以降は「,」を頭に入れた値を
後ろにつなげていきます。
すると
東京,名古屋,大阪,福岡
このように区切り文字を付けて表示できます。
PHPで同じようなことやるとこんな感じ
$str = "";
foreach ($array as $value) {
$str .= $value ;
}
Smartyは便利だと思う時もあるけど
不便だと思う時もありますね。
今回はどうしても、Smarty側でやらないとできなかったので
Smarty側で文字列を連結しました。
本来ならPHP側でやった方がらくかもしれないです。
