我已经使用eval命令尝试了许多不同的代码组合。但是我的答案总是空白的。这是我尝试过的一个简单的。
$equation = "18 - (18 * 2) - 1";
$var = eval($equation);
echo "answerswer: " . $var;
我知道这不需要评估代码,但我正在处理的真正代码需要。它总是显示为空白。
解决方案
在计算语句中添加return
,否则eval()
将不知道要返回什么:
$equation = '2 + 2 * 2';
$var = eval("return $equation;");
证明上述工作:http://ideone.com/bTtIH
关于return
与设置变量的优越性
更多来自eval()
文档:
eval()
返回NULL
,除非在计算的代码中调用return
,在这种情况下,将返回传递给return
的值。
换句话说:没有必要污染命名空间,你可以直接从eval()
返回的东西中得到你想要的东西。
当你将变量传递给eval()
时,你需要在方程中设置变量,使其成为一个有效且完整的 PHP 表达式:
$equation = "18 - (18 * 2) - 1";
eval( '$var = ' . $equation . ';');
echo "answerswer: " . $var;
或者,您可以返回以下值:
$var = eval( 'return ' . $equation . ';');
现在您可以执行echo $var;
,如本演示所示。
话虽如此,通常不鼓励使用eval()
,因为根本问题通常通过其他方法解决。