当我使用没有美元符号的变量名时,PHP 不会给我错误


PHP doesn't give me error when I use a variable name without dollar sign

我在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是一个定义的常量!