我在php网页上有以下代码:
if (bInserted) echo "abc";
我希望PHP给我一个语法错误,因为我忘了在变量名之前添加美元符号。但是,该页面不会产生任何错误。相反,它甚至回应了“abc”字符串。我真的不能理解这一点。
答案 0 :(得分:5)
您的bInserted
被解释为constant
,并且由于未定义(我推测),因此将其视为字符串"bInserted"
,其结果为true
因此打印出"abc"
。
无论如何,从常量到字符串的这种隐式转换应引发通知,请参阅the manual。
如果使用未定义的常量,PHP假定您的意思是名称 常量本身,就像你把它称为字符串一样(CONSTANT vs“CONSTANT”)。此时将发出级别E_NOTICE的错误 发生的情况。
如果您确实没有看到任何消息,也未在屏幕上或日志中看到,请确保您设置了正确的error reporting级别,例如可以尝试
ini_set('display_errors', 1);
error_reporting(E_ALL);
顺便说一下,E_ALL
在这种情况下是一个定义的常量!