<?php
// expression is in variable
$var = "1+2*3/4"
// and I want it to perform and show but calculated:
echo $var; // excepted: 2.25
?>
所以我在变量中有calc表达式,然后我需要计算。有可能吗?
答案 0 :(得分:2)
方法是评估表达式。
echo eval('echo '.$var.';');
这给了我 2.5 bytheway ..这就是正确答案:)
请考虑eval(); 危险暴露给任何人,并且非常难以保护。
"echo 3+4; echo file_get_contents('index.php');"
你eval()
这是一个提交的字符串,我有PHP的源代码。可能包含你的数据库密码,我现在可以自由连接,并随心所欲地转储到我的屏幕上。我也可以把unlink('index.php');
放在那里,这只是一种破坏性的。
答案 1 :(得分:1)
有一个名为eval
的函数可以解决这个问题,但在使用它时应该采取很好的预防措施:
http://php.net/manual/en/function.eval.php
<?php
$var = eval("echo 1+2*3/4;");
echo $var;
// val is 2.5 (2*3/4 is calculated first, then 1 is added to the result)
$var = eval("echo (1+2)*3/4;");
echo $var; // val is 2.25
?>
有关为何需要括号的说明,请参阅http://en.wikipedia.org/wiki/Order_of_operations
最重要的是你需要确保发送给eval的字符串不包含任何不应该
的字符串eval使用非常危险。你已被警告