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

时间:2013-10-23 06:31:58

标签: php

我在php网页上有以下代码:

  if (bInserted) echo "abc";

我希望PHP给我一个语法错误,因为我忘了在变量名之前添加美元符号。但是,该页面不会产生任何错误。相反,它甚至回应了“abc”字符串。我真的不能理解这一点。

1 个答案:

答案 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在这种情况下是一个定义的常量!