1

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

  if (bInserted) echo "abc";

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

4

1 回答 1

5

YourbInserted被解释为 a constant,并且由于未定义(我假设),因此它被视为 string "bInserted",其计算结果为trueyour"abc"被打印。

无论如何,这种从常量到字符串的隐式转换应该引起注意,请参阅手册

如果您使用未定义的常量,PHP 假定您指的是常量本身的名称,就像您将其称为字符串一样(CONSTANT 与“CONSTANT”)。发生这种情况时将发出 E_NOTICE 级别的错误。

如果您真的没有看到任何消息,也没有在屏幕上或日志中看到,请确保您设置了正确的错误报告级别,例如,您可以尝试

ini_set('display_errors', 1);
error_reporting(E_ALL);

而且,顺便说一下,E_ALL在这种情况下是一个定义的常量!

于 2013-10-23T06:33:59.047 回答