Attribute Name Type Required Default Description
equation string Yes n/a the equation to execute
format string No n/a the format of the result (sprintf)
var numeric Yes n/a equation variable value
assign string No n/a template variable the output will be assigned to
[var ...] numeric Yes n/a equation variable value

属性 类型 是否必须 缺省值 描述
equation string Yes n/a 待执行的表达式
format string No n/a 结果的格式(遵从sprintf函数)
var numeric Yes n/a 表达式变量值
assign string No n/a 输出值将被赋给模板变量的名称
[var ...] numeric Yes n/a 表达式变量值

math allows the template designer to do math equations in the template. Any numeric template variables may be used in the equations, and the result is printed in place of the tag. The variables used in the equation are passed as parameters, which can be template variables or static values. +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans and tan are all valid operators. Check the PHP documentation for further information on these math functions.

math 允许模板设计者在模板中进行数学表达式运算. 均表达式中可以使用任何数值类型的变量,结果在 math 标签的位置输出. 表达式中使用的变量被当做参数传递给函数,可以是模板变量或静态值. 目前可以使用的运算符有:+, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans 和 tan .关于数学函数的详细信息,请查看 PHP 文档.

If you supply the special "assign" attribute, the output of the math function will be assigned to this template variable instead of being output to the template.

如果指定了 "assign" 这个特殊属性,该函数的输出值将被赋给由 assign 指定的模板变量,而不是直接输出.

Technical Note: math is an expensive function in performance due to its use of the php eval() function. Doing the math in PHP is much more efficient, so whenever possible do the math calculations in PHP and assign the results to the template. Definately avoid repetitive math function calls, like within section loops.

技术要点: 由于使用了 php 的 eval() 函数,math 函数的执行效率不高. 在 PHP 中做数学运算效率会更高一些,因此要尽可能在 PHP 中做数学运算,将结果赋给模板变量. 类似在 section 循环,应明确避免反复调用 math 函数.

Example 8-14. math
例 8-14. math 函数演示

{* $height=4, $width=5 *}

{math equation="x + y" x=$height y=$width}



{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}

{math equation="height * width / division"



{* you can use parenthesis *}

{math equation="(( x + y ) / z )" x=2 y=10 z=2}



{* you can supply a format parameter in sprintf format *}

{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}