PHP字符串比较没有引号

tro*_*man 7 php string

根据我对PHP的了解,以下语法合法:

if ($s == Yes)
Run Code Online (Sandbox Code Playgroud)

它应该写成:

if ($s == 'Yes')
Run Code Online (Sandbox Code Playgroud)

但是,第一个例子工作正常.谁知道为什么?

Wil*_*den 13

通常情况下,它会被解释为一个常数,但如果PHP不能找到一个常量,这个名字,那么它假定它是尽管缺乏行情的一个字符串文字.这将生成E_NOTICE消息(可能不可见,具体取决于您的错误报告级别); 就像是:

注意:使用未定义的常量是 - 在第3行的script.php中假设为"是"

基本上,PHP过于宽松.


Gre*_*reg 8

简而言之,PHP就好像引号一样.

如果PHP无法将某些内容识别为保留令牌,则会将其视为字符串文字.

错误日志将显示有关此内容的警告.