7

祝大家有个愉快的一天,我有件事要问你,为了更好地理解这里是我的代码:

{math equation=((($order_total-$commission)+$discount+$delivery_charge)*$rate)}

我希望将其传递给另一个变量,在 php 中我想成为这样

<?php 
  $var=0
  foreach($result as $resultA){
   $var = $var+((($order_total-$commission)+$discount+$delivery_charge)*$rate);
}
?>

希望你们能帮助我伙计们!

4

2 回答 2

14

如果您使用 Smarty 3,我强烈建议您放弃 {math}:

{$order_total = 123}
{$commission = 13}
{$discount = 10}
{$delivery_charge = 20}
{$rate = 1.1}

{$result = 0}
{$result = $result + ($order_total - $commission + $discount + $delivery_charge) * $rate}
{$result}

它可读性更好,速度更快(因为表达式实际上是编译的,而不是eval()ed一遍又一遍地编译)。


Smarty 2 等价物:

{assign var="order_total" value=123}
{assign var="commission" value=13}
{assign var="discount" value=10}
{assign var="delivery_charge" value=20}
{assign var="rate" value=1.1}

{assign var="result" value=0}
{math 
  assign="result"
  equation="result + (order_total - commission + discount + delivery_charge) * rate"
  result=$result
  order_total=$order_total
  commission=$commission
  discount=$discount
  delivery_charge=$delivery_charge
  rate=$rate
}
{$result}

如果有任何机会升级到 Smarty 3 - 去做吧!

于 2012-06-22T14:26:18.030 回答
1

尝试使用assign参数:

从文档http://www.smarty.net/docsv2/en/language.function.math.tpl

如果您提供了 assign 属性,{math} 函数的输出将被分配给这个模板变量,而不是被输出到模板。

但是如果你使用 PHP 进行过类似的计算会更好(在业务逻辑层,而不是在视图)

请参阅http://www.smarty.net/best_practices“保持业务逻辑分离!”部分)

于 2012-06-22T13:11:00.460 回答