2013-05-13 3 views
0

Это мой код:Максимальная умник Math

<td class="bezcat bg{math equation="floor(x/8)+1" x=$dag.wp.0}">{$dag.wp.1}<br/><i>({$dag.wp.0})</i></td> 

Что мой код делает, это вычислить значение в зависимости от числа (х) и сделать имя класса него (bg1, bg2, BG3, BG4 или bg 5). У каждого класса есть собственный цвет фона, низкий x (x<=8) будет иметь зеленый цвет фона, большой x (x>=40) будет красным.

Мой расчет отлично работает, за исключением одного пункта. Я только назвал 5 классов в моем css (от bg1 до bg5), поэтому, когда вычисленное значение будет больше, чем 5 (скажем, с x=100), мое имя класса будет bg12 и не описано в моем css. Каков наилучший способ выполнить это, когда мое вычисляемое значение больше 5, мое имя класса будет bg5. Может быть, что-то с if-утверждениями?

ответ

1

Предварительно: это не проверено.

Smarty поддерживает функцию PHP min. Таким образом, вы могли бы использовать это:

{math equation="min(5, floor(x/8)+1)" x=$dag.wp.0} 

Как примечание из документации Smarty {math}:

{математика} является дорогостоящей функцией в производительности благодаря использованию функции PHP Eval(). Выполнение математики в PHP намного более эффективно, поэтому, когда это возможно, математические вычисления в скрипте и присваивать() результаты шаблону.

+1

Простой и эффективный, отлично работает, спасибо! – Jovano

Смежные вопросы