もちろん、これは間違いなく実現可能ですが、非常に複雑です。以下の著者が、Smarty テンプレートで直接乱数を生成する方法についてのちょっとしたトリックを共有します。
ここで、smarty テンプレートで 125 ~ 324 の範囲の乱数を生成する必要があると仮定すると、次のように記述できます:
これで目標は達成できましたが、どうでしょうか?非常に簡単ではありませんか? ここでは主に Smarty テンプレートの math 関数が使用されます。Smarty math 関数の機能と使い方について簡単に説明します。
math を使用すると、テンプレート設計者は、任意の数値型の変数を式で使用でき、式で使用される変数はパラメータとして関数に渡されます。現在使用可能な演算子は、テンプレート変数または静的値です: +、-、/、*、abs、ceil、cos、exp、floor、log、log10、max、min、pi、pow、rand、round、sin、sqrt、 srans および Tan 数学関数の詳細については、PHP ドキュメントを参照してください。
特別な属性「assign」が指定されている場合、関数の出力値は直接出力されるのではなく、assignで指定されたテンプレート変数に代入されます。
ただし、PHP の eval() 関数を使用するため、数学関数の実行効率は高くありません。そのため、PHP で数学演算を実行する方が効率的です。可能であり、結果をテンプレート変数に割り当てて変換します。
スマートな数学関数のデモ
{数式="x + y" x=$height y=$width}
{数式="高さ * 幅 / 除算"
height=$row_height
width=$row_width
division=#col_div#}
{数式="(( x + y) / z )" x=2 y=10 z=2}
{数式="x + y" x=4.4444 y=5.0000 format="%.2f"}