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} позволяет дизайнерам шаблонов проводить математические вычисления в шаблоне. Любые числовые переменные шаблона могут быть использованы в уравнениях, и результат будет выведен на месте этого тега. Переменные, используемые в уравнении, передаются в виде параметров, которые могут быть переменными шаблона или статическими значениями. +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans и tan являются доступными операторами. Обратитесь к документации PHP для получения дополнительной информации по этим математическим функциям.
Если вы указываете специальный параметр "assign", результат выполнения функции {math} будет присвоен переменной шаблона вместо вывода в шаблон.
Имя атрибута | Тип | Обязателен | По умолчанию | Описание |
---|---|---|---|---|
equation | string | Да | n/a | уравнение для выполнения |
format | string | Нет | n/a | формат результата (sprintf) |
var | numeric | Да | n/a | значение переменной уравнения |
assign | string | Нет | n/a | имя переменной шаблона для сохранения результата |
[var ...] | numeric | Да | n/a | значение переменной уравнения |
{math} - это очень ресурсоёмкая функция из-за использования ею функции PHP eval(). Выполнение математических операций в PHP намного эффективнее, так что по возможности используйте PHP для математических рассчетов и присваивайте результат шаблону. При любых обстоятельствах, избегайте повторяющихся вызовов функции {math}, например внутри циклов {section}.
Example 8.22. {math}
Пример №1:
{* $height=4, $width=5 *} {math equation="x + y" x=$height y=$width}
Результат выполнения данного примера:
9
Пример №2:
{* $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#}
Результат выполнения данного примера:
100
Пример №3:
{* вы можете использовать скобки *} {math equation="(( x + y ) / z )" x=2 y=10 z=2}
Результат выполнения данного примера:
6
Пример №4:
{* вы можете указать формат sprintf в параметре format *} {math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
Результат выполнения данного примера:
9.44