diff options
Diffstat (limited to 'vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md')
-rw-r--r-- | vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md | 107 |
1 files changed, 51 insertions, 56 deletions
diff --git a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md index 9adfd1c5a..7b34fccff 100644 --- a/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md +++ b/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md @@ -1,9 +1,18 @@ -{math} {#language.function.math} -====== +# {math} `{math}` allows the template designer to do math equations in the template. +## Attributes + +| Attribute Name | Required | Description | +|----------------|----------|--------------------------------------------------| +| equation | Yes | The equation to execute | +| format | No | The format of the result (sprintf) | +| var | Yes | Equation variable value | +| assign | No | Template variable the output will be assigned to | +| \[var \...\] | Yes | Equation variable value | + - Any numeric template variables may be used in the equations, and the result is printed in place of the tag. @@ -13,7 +22,7 @@ template. - +, -, /, \*, 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](&url.php-manual;eval) functions. + [math](https://www.php.net/eval) functions. - If you supply the `assign` attribute, the output of the `{math}` function will be assigned to this template variable instead of being @@ -22,83 +31,69 @@ template. > **Note** > > `{math}` is an expensive function in performance due to its use of the -> php [`eval()`](&url.php-manual;eval) function. Doing the math in PHP +> php [`eval()`](https://www.php.net/eval) function. Doing the math in PHP > is much more efficient, so whenever possible do the math calculations -> in the script and [`assign()`](#api.assign) the results to the +> in the script and [`assign()`](../../programmers/api-functions/api-assign.md) the results to the > template. Definitely avoid repetitive `{math}` function calls, eg -> within [`{section}`](#language.function.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 a:** +> within [`{section}`](../language-builtin-functions/language-function-section.md) loops. +## Examples - {* $height=4, $width=5 *} +**Example 1** +```smarty - {math equation="x + y" x=$height y=$width} +{* $height=4, $width=5 *} +{math equation="x + y" x=$height y=$width} +``` - The above example will output: +``` +9 +``` - 9 - - -**Example b:** +**Example 2** +```smarty +{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *} - {* $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#} - - +{math equation="height * width / division" + height=$row_height + width=$row_width + division=#col_div#} +``` The above example will output: - - 100 - +``` +100 +``` +**Example 3** -**Example c:** - +```smarty +{* you can use parenthesis *} - {* you can use parenthesis *} - - {math equation="(( x + y ) / z )" x=2 y=10 z=2} - - +{math equation="(( x + y ) / z )" x=2 y=10 z=2} +``` The above example will output: +``` +6 +``` - 6 - - - -**Example d:** - +**Example 4** - {* you can supply a format parameter in sprintf format *} +```smarty +{* you can supply a format parameter in sprintf format *} - {math equation="x + y" x=4.4444 y=5.0000 format="%.2f"} - +{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"} +``` - The above example will output: - - - 9.44 - - +``` +9.44 +``` |