ここから本文です
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