Php 用smarty math扣除百分比
不知道如何在Smarty中实现这一点,但这正是我正在尝试的 从价格中扣除25.5%Php 用smarty math扣除百分比,php,smarty,Php,Smarty,不知道如何在Smarty中实现这一点,但这正是我正在尝试的 从价格中扣除25.5% {math assign="$percentage" equation="(x - y)" x=$product.price y="25.5%" format="%.2f"} {$percentage} 但我发现做这些 y="25.5%" 不起作用,我试着研究最佳实践,但到目前为止,我发现我什么都不懂 任何想法都非常受欢迎;) 我对Smarty一点也不熟悉,但您需要将价格乘以百分比(表示为0到1之间的十进制值
{math assign="$percentage" equation="(x - y)" x=$product.price y="25.5%" format="%.2f"}
{$percentage}
但我发现做这些
y="25.5%"
不起作用,我试着研究最佳实践,但到目前为止,我发现我什么都不懂
任何想法都非常受欢迎;) 我对Smarty一点也不熟悉,但您需要将价格乘以百分比(表示为0到1之间的十进制值)以获得折扣,然后从原始价格中减去该值。所以,你要找的等式是:
x - (.255 * x)
在Smarty中可能工作,也可能不工作:
{math assign="$percentage" equation="(x - (.255 * x))" x=$product.price format="%.2f"}
第一件事——如果可能的话,您应该用PHP进行这样的计算,并将结果简单地分配给Smarty。在大多数情况下,这是最好的方法。您还需要注意: {math}由于使用了 php eval()函数。用PHP做数学运算效率更高,所以 尽可能在脚本中进行数学计算并赋值() 将结果添加到模板中。绝对避免重复{math} 函数调用,例如在{section}循环中 但假设您仍然希望直接在Smarty中执行此操作 首先,当您在math中使用assign时,不应该在变量名之前使用
$
,所以它应该是{math assign=“percentage”
,而不是{math assign=“$percentage”
您不能在y中使用百分比,因此需要这样做:
{math assign="percentage" equation="(100-y)/100 * x" x=$product.price y="25.5" format="%.2f"}
{$percentage}
还是这样
{math assign="percentage" equation="(1-y/100) * x" x=$product.price y="25.5" format="%.2f"}
{$percentage}
或者简单地说,你不应该通过25.5作为y,而是已经除以100,所以0.255如下
{math assign="percentage" equation="(1-y) * x" x=$product.price y="0.255" format="%.2f"}
{$percentage}
所有这些方法都会生成相同的预期结果。您不需要使用
数学
或赋值
,只需直接进行计算,尽管正如Mark Baker所说,$y
需要是一个数字(0.255),而不是一个百分比字符串:
{($product.price - ($product.price * $y))|string_format:"%.2f%%"}
您可以将百分比字符放在Smarty标记之外,但我将其放在了string\u格式中,因此它是独立的。x-(y/100*x)
…并且y
应该是一个没有百分号的数字(25.5
)