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