繁体   English   中英

使用1 === 1时PHP语法错误,但是当1 === 0时不是

[英]PHP syntax error when using 1===1 but not when 1===0

所以我想快速测试一些代码并得到一个奇怪的结果。

在此输入图像描述

有人能解释我为什么会这样吗?

PHP版本7.2.7-1 + ubuntu16.04.1 + deb.sury.org + 1

1===1导致值为true ,当转换为字符串时为'1'
1===0导致值为false ,当转换为字符串时为''

您的调用等同于eval('1')eval('') 第一个是不完整的 PHP代码,因为它缺少了一个; 第二个是什么都没有,什么都不做。 eval碰巧因无所事事而返回false

你必须将一个字符串传递给eval ,这就是它的全部要点。

应使用引号""/''来调用eval ,而不是你要做的。 假设你使用错误的构造,假设它的运气由于某种原因是false

写它的正确方法是:

var_dump(eval("return 1===1;"));

PHP eval ()构造用于将输入字符串计算为PHP,然后对其进行处理。 Eval()不是一个函数,但它在输出所有东西的意义上就像一个函数 - 除了不输出它作为文本,它输出它作为要执行的PHP代码

尝试

var_dump(eval("1===1;"));

1 === 0 is false
1===1 is true

因此,如果您尝试执行此代码,您将获得相同的结果

eval(false); //false equal to empty string so it don't throw error
eval(true); //true is not valid php code, thats why error throwed 

运算符必须用分号分隔

eval(1===1 . ';'); //this is valid php code
eval('1===1;'); //this is also valid php code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM