php eval可以返回一个布尔值吗?

时间:2010-10-26 21:07:23

标签: php eval

我似乎无法让eval返回'(4> 5)'的布尔值

这可能吗?如果不是,我怎么能让它工作(没有编写解析器)

我试过这个:

$v = eval('return (10 > 5)');
var_dump($v);

// Result = bool(false)

更新

感谢@Pekka - 我在上面的代码中添加了一个分号,它可以运行。

3 个答案:

答案 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');