What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{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.
If you supply the assign
attribute, the output of the
{math}
function will be assigned to this template
variable instead of being output to the template.
{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 the script
and assign()
the results to the template. Definitely avoid repetitive
{math}
function calls, eg within
{section}
loops.
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 |
Example 8.21. {math}
Example a:
{* $height=4, $width=5 *} {math equation="x + y" x=$height y=$width}
The above example will output:
9
Example b:
{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *} {math equation="height * width / division" height=$row_height width=$row_width division=#col_div#}
The above example will output:
100
Example c:
{* you can use parenthesis *} {math equation="(( x + y ) / z )" x=2 y=10 z=2}
The above example will output:
6
Example d:
{* you can supply a format parameter in sprintf format *} {math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
The above example will output:
9.44