此处提出了类似的问题:PHP variable like $myvar-test is not valid?
我已阅读PHP Userland Naming Guide 在哪里说:
变量名遵循与PHP中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表达为:' [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'
我对此感到好奇answer,以及为什么这些变通办法有效:${'0x00'}
,或者:${'900'}
或此${'bad-name'}
。
我的问题有两部分......为什么这有效?我的问题的第二部分:它们会被视为有效变量还是被认为是别的东西(我不会问它们是否有效,但它们会被归类为什么。)
答案 0 :(得分:1)
根据此链接:http://cowburn.info/2008/01/12/php-vars-curly-braces/
答案是:
$_GLOBALS
数组中的键/值对更多,而不是变量的名称。 $var
表示法访问它们。 答案 1 :(得分:0)
我认为解析器实际上没有验证{}内的表达式。尽管如此,内部PHP使用HashTable来存储变量,因此任何字符串或数字都是有效的。