使用1 === 1时发生PHP语法错误,但当1 === 0时未发生PHP语法错误

时间:2018-10-09 11:08:34

标签: php

因此,我想真正地快速测试一些代码,但结果却很奇怪。

enter image description here

有人可以解释我为什么得到这个吗?

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

4 个答案:

答案 0 :(得分:9)

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

您的调用等效于eval('1')eval('')。第一个是不完整 PHP代码,因为它缺少;。第二个就是什么也不做。由于无所事事,eval返回false

您必须将 string 传递给eval,这就是重点。

答案 1 :(得分:3)

eval应该用引号""/''来调用,而不要。假设false出于某种原因起作用,即使您使用的构造错误,也很幸运。

正确的编写方式是:

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

答案 2 :(得分:2)

PHP eval()构造用于将输入字符串评估为PHP,然后对其进行处理。 Eval()不是函数,但从某种意义上说,它就像输出任何东西一样工作—除了将其输出为文本而不是将其输出为要执行的PHP代码之外,其他方式都是如此

尝试

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

答案 3 :(得分:0)

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