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

Ste*_*eng 1 php

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

  if (bInserted) echo "abc";
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*ari 5

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