スポンサードリンク

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側でやった方がらくかもしれないです。
スポンサードリンク