2014-12-06 38 views
0

我在发票系统中工作,必须为每个产品计算不同的公式,这需要用宽度,高度和材料成本填充。使用我的php变量作为公式来计算东西

我确实在那里我存储

t_title -> "Curtain 1" 

t_formula -> "({ANCHO}*{ALTURA})*{PRECIO}" 

一个数据库,然后PHP做到这一点:

<?php 
    $ancho = str_replace("{ANCHO}", $_POST['ancho'], $articulo['t_formula']); 
    $alto = str_replace("{ALTURA}", $_POST['alto'], $ancho); 
    $precio = str_replace("{PRECIO}", $_POST['precio'], $alto); 
    $total = $precio; echo eval($total); 
?> 

,结果是不会放弃任何东西,而是一个空白。

我该如何让它工作?我知道,PHP不能从变量作为PHP计算,但我找不到另一种方式来做到这一点。

+0

是否't_formula'有它的'x's或'*单曲? – Mureinik 2014-12-06 16:03:55

+0

*但该网站没有显示它们,我将其替换。 – davco98 2014-12-06 16:05:18

+1

'*'是markdown中的格式化元素。我编辑了这个问题,以便正确显示变量。 – Mureinik 2014-12-06 16:06:47

回答

0

您使用eval是错误的。传递给eval的字符串必须是有效的PHP代码。即:

$precio2 = '$total = '.$precio.';'; 
eval($precio2); 
echo $total; 

http://php.net/manual/en/function.eval.php

+1

谢谢,我从来没有用过eval();谢谢。 – davco98 2014-12-06 16:14:03

+0

现在它给出'$ total =(10 * 10)* 1000' – davco98 2014-12-06 16:15:44

+0

@ davco98注意编辑答案,我在最后添加了';'以使字符串成为有效的PHP代码。 – SaidbakR 2014-12-06 16:17:31

1

的eval()函数期望字符串参数是一个正确的代码语句。

$str = '(10*10) * 1000'; 
echo eval($str); 

会给你一个错误,因为PHP无法评估该字符串。然而,

$str = 'return (10*10) * 1000;'; 
echo eval($str); 

将正确计算表达式。

你应该使用:

$total = 'return ' . $precio . ';'; 
echo eval($total);