Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用smarty math扣除百分比_Php_Smarty - Fatal编程技术网

Php 用smarty math扣除百分比

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之间的十进制值

不知道如何在Smarty中实现这一点,但这正是我正在尝试的

从价格中扣除25.5%

{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