{math}

{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