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