{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}.
Пример 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