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