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