0

我使用 eval 命令尝试了许多不同的代码组合。但是我的答案总是空白。这是我试过的一个简单的。

$equation = "18 - (18 * 2) - 1";
$var = eval($equation);
echo "answer: " . $var;

我知道这不需要 eval 代码,但我正在处理的真实代码需要。它总是显示为空白。

4

2 回答 2

3

您需要在传递它时在方程中设置变量,eval()以使其成为有效且完整的 PHP 表达式:

$equation = "18 - (18 * 2) - 1";
eval(  '$var = ' . $equation . ';');
echo "answer: " . $var;

或者,您可以返回值:

$var = eval(  'return ' . $equation . ';');

现在您可以执行echo $var;演示了。

话虽如此,eval()通常不鼓励使用,因为潜在问题通常通过其他方式解决。

于 2012-08-09T00:38:08.720 回答
3

解决方案

return在评估的语句中添加,否则eval()将不知道返回什么:

$equation = '2 + 2 * 2';
$var = eval("return $equation;");

证明,上述工作:http: //ideone.com/bTtIH

关于return与设置变量的优越性

更多来自以下文档eval()

eval()返回NULL除非return在评估代码中调用,在这种情况下return返回传递给的值。

换句话说:不需要污染命名空间,你可以直接从eval()返回的东西中得到你想要的东西。

于 2012-08-09T00:41:01.707 回答