smarty template engine
Monday, December 01, 2008  
download | documentation | faq | forum | mailing lists | changelog | contribs 


search for in the  


{math}

{math} позволяет дизайнерам шаблонов проводить математические вычисления в шаблоне. Любые числовые переменные шаблона могут быть использованы в уравнениях, и результат будет выведен на месте этого тега. Переменные, используемые в уравнении, передаются в виде параметров, которые могут быть переменными шаблона или статическими значениями. +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans и tan являются доступными операторами. Обратитесь к документации PHP для получения дополнительной информации по этим математическим функциям.

Если вы указываете специальный параметр "assign", результат выполнения функции {math} будет присвоен переменной шаблона вместо вывода в шаблон.

Имя атрибутаТипОбязателенПо умолчаниюОписание
equationstringДаn/aуравнение для выполнения
formatstringНетn/aформат результата (sprintf)
varnumericДаn/aзначение переменной уравнения
assignstringНет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



 

credits 

Smarty Copyright © 2002-2008
New Digital Group, Inc.

All rights reserved.