ここから本文です
Smarty3で変数名をいろいろ実験
Smarty3では動的な変数名をちょっと使いやすくなっています。
たとえば以下のように。
例1
{$hoge_1 = 'hoge1'}
{$fuga = '1'}
{$hoge_{$fuga}}
出力:hoge1
これはこれで便利なのですが、たとえば以下のようなことはできない。
例2
$arrs = array(
'arr_1' => '111',
'arr_2' => '222',
);
$smarty->assign('arrs',$arrs);
これを出力すると、たとえばこう。
{$arrs.arr_1}
出力:1111
ちゃんと表示される。でも、【例2】のようなことをしようとすると……。
{$arrs.arr_{fuga}}
「1111」を期待したいところだけどfatalで止まっちゃう。
だからやっぱり「ちょっと便利」というかんじなのかなあ、ト。
例3
以下とりとめもなく。
{$hoges = array('hoge','fuga')}
{$hoges|@var_dump}
出力:array(2) { [0]=> string(4) "hoge" [1]=> string(4) "fuga" }
これは期待通り。
{$hoges = array('hoge' => 'foo','fuga' => 'bar')}
{$hoges|@var_dump}
これは、エラー。「=>」はNGらしい。
{$arr1 = array('hoge','fuga')}
{$arr2 = array('foo','bar')}
{$hoges = array($arr1,$arr2)}
こういう代入もいける。
{$hoges = array(array('hoge','fuga'),array('foo','bar'))}
こんなのも大丈夫。
ちなみにこれを出力してみる。
{$hoges.1.1}
{$hoges.1.{$fuga}}
{$hoges.{$fuga}.1}
{if $hoges.1.{$fuga} == 'bar'}
barです。
{/if}
これらはみんなうまくいく。やっぱりチトくせがあるよう。
ジャンル: Web

