{math}

{math}可以让模板设计者在模板中进行一些数学运算。

  • 任何在模板中的数字变量都可以进行计算,而计算的结果会替代原来的标签。

  • 模板变量或者静态的值都可以作为参数进行计算。

  • 可以允许的计算有 +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans 和 tan 。 参见PHP手册,了解math 函数。

  • 如果你提供了assign 属性, {math}函数的输出将不会显示,而是赋值给模板变量。

技术说明

因为使用了PHP函数 eval(),所以{math}是一个比较耗费性能的操作。 在PHP中做数学运算会更高效,所以尽可能在PHP进行数学运算并且把结果 assign()到模板中。 比较不建议的做法是在循环中使用{math}函数,比如在 {section}循环。

参数名称 类型 必选参数 默认值 说明
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 运算的变量值


Example 8.21. {math}

例子 a:

  1. {* $height=4, $width=5 *}
  2.  
  3. {math equation="x + y" x=$height y=$width}
  4.  

输出:

  1. 9
  2.  

例子 b:

  1. {* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
  2.  
  3. {math equation="height * width / division"
  4. height=$row_height
  5. width=$row_width
  6. division=#col_div#}
  7.  

输出:

  1. 100
  2.  

例子 c:

  1. {* you can use parenthesis *}
  2.  
  3. {math equation="(( x + y ) / z )" x=2 y=10 z=2}
  4.  

输出:

  1. 6
  2.  

例子 d:

  1. {* you can supply a format parameter in sprintf format *}
  2.  
  3. {math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
  4.  

输出:

  1. 9.44
  2.  

原文: https://www.smarty.net/docs/zh_CN/language.function.math.tpl