Smartyでループさせたときに文字列を連結させる方法

Smarty

Smarty

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側でやった方がらくかもしれないです。

スポンサードリンク

コメントを残す

サブコンテンツ

このページの先頭へ