smartyはPHPのテンプレートエンジンです。
smartyを使っていろんな計算をする方法を紹介します。
単純な足し算引き算掛け算割り算
{* $foo='2' $bar='3' *}
上記のような数字が変数に入っている時、下記のような計算を行うことができます。
※()を使った複雑な計算をする場合は、{math}を使わなければなりません(後に説明します)。
加算
「+」を利用します。左の値と演算子と右の値の間にスペースは入れません。
サンプル
{$foo+$bar}
結果
5
減算
「-」を利用します。左の値と演算子と右の値の間にスペースは入れません。
サンプル
{$foo-$bar}
結果
-1
乗算
「*」を利用します。左の値と演算子と右の値の間にスペースは入れません。
サンプル
{$foo*5}
結果
10
除算
「/」を利用します。左の値と演算子と右の値の間にスペースは入れません。
サンプル
{$foo/2}
結果
1
mathを使った複雑な計算
{math}を使うと、()を使った複雑な計算をすることができるようになります。
{math equation='数式'}
上記のように記述します。
結果を変数に格納したい場合は、
{math equation='数式' assign='結果を格納する変数'}
のように記述します。
assignで結果を変数に格納する以外にも、formatで結果を整形したり、変数や()を利用した複雑な計算を行うことができます。
数字を使ったmath
equationには数式を記入します。
数式には数字や演算子(+,-,*,/)を利用することができます。
サンプル
{math equation='1+2' assign='hoge'} {$hoge}
結果
3
また、数式には()を利用することができます。
サンプル
{math equation='(1+2)*3' assign='hoge'} {$hoge}
結果
9
formatを指定すると、sprintf 形式のフォーマット文字列を指定できます。
下記の例では、小数点第二位まで求めています。
サンプル
{math equation='(4+6)/3' assign='hoge' format='%.2f'} {$hoge}
結果
3.33
変数を使ったmath
equation内で変数を利用できます。
equation内で使用した変数は、math内で指定してください。
サンプル
{math equation='x+y' x='2' y='3' assign='hoge'} {$hoge}
結果
5
equation内で利用した変数に既に設定されている変数を割り当てることができます。
上の例では、xに$xを、yに$yを割り当てています。
サンプル
{assign var='x' value='2'}{* $x = 2 *} {assign var='y' value='3'}{* $y = 3 *} {math equation='(x+y)*x' x=$x y=$y assign='hoge'} {$hoge}
結果
10
参考URL
- smarty:{math}