3

这里问了一个类似的问题:PHP variable like $myvar-test is not valid?

我已经阅读了PHP Userland Naming Guide 它说:

变量名称遵循与 PHP 中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它会这样表达:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

我很好奇的是这个答案,以及为什么这些变通办法有效:${'0x00'},或者这个:${'900'},或者这个${'bad-name'}

我的问题有两个部分......为什么这行得通?我的问题的第二部分:它们会被视为有效变量还是会被视为其他东西(我不是在问它们是否有效,而是在问它们将被归类为什么。)

4

2 回答 2

1

根据此链接:http ://cowburn.info/2008/01/12/php-vars-curly-braces/

答案是:

  • 问题1:因为大括号内的内容不仅仅是变量的名称,而是$_GLOBALS数组中的键/值对。
  • 问题 2:它们将成为您脚本的 $Globals 的一部分,但您无法使用常规$var符号访问它们。
于 2012-06-15T16:20:33.157 回答
0

我相信解析器实际上并没有验证 {} 中的表达式。尽管如此,PHP 内部使用 HashTable 来存储变量,因此任何字符串或数字都是有效的。

于 2012-06-15T16:22:01.137 回答