我似乎无法让eval返回'(4> 5)'的布尔值
这可能吗?如果不是,我怎么能让它工作(没有编写解析器)
我试过这个:
$v = eval('return (10 > 5)');
var_dump($v);
// Result = bool(false)
更新
感谢@Pekka - 我在上面的代码中添加了一个分号,它可以运行。
答案 0 :(得分:4)
请参阅the manual:
eval()返回NULL,除非在计算代码中调用return,在这种情况下返回传递给return的值。如果计算代码中存在解析错误,则eval()返回FALSE并继续执行以下代码。使用set_error_handler()在eval()中捕获解析错误是不可能的。
它的工作方式就像@mhitza在评论中已经说过的那样。我只想添加括号以确保安全:
$x = eval('return (4 < 5);');
echo $x;
答案 1 :(得分:1)
请启用display_errors
&amp;在转向社区之前适合error_reporting
:
解析错误:语法错误,意外的$ end in - (2):eval()'代码在第1行
阿哈:
eval('return (10 > 5);');
注意;
。
答案 2 :(得分:0)
这可能已经得到了充分的回答......但是有帮助的是我总是将PHP中的eval视为整行代码,并且不要忘记分号,例如。
eval('\$myBooleanValue = 4 > 5;');
return $myBooleanValue;
不要尝试这样的事情:
$myBooleanValue = eval('4 > 5');