我在发票系统中工作,必须为每个产品计算不同的公式,这需要填充宽度,高度和材料成本。
我做了一个我正在存储的数据库
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 :(得分:1)
eval()函数希望string参数是一个正确的代码语句。
$str = '(10*10) * 1000';
echo eval($str);
会给你一个错误,因为php无法评估该字符串。然而,
$str = 'return (10*10) * 1000;';
echo eval($str);
将正确评估表达式。
您应该使用:
$total = 'return ' . $precio . ';';
echo eval($total);
答案 1 :(得分:0)
您使用eval
是错误的。传递给eval的字符串必须是有效的PHP代码。即:
$precio2 = '$total = '.$precio.';';
eval($precio2);
echo $total;