【问题标题】:php variable name and bracesphp 变量名和大括号
【发布时间】:2012-06-15 16:09:57
【问题描述】:

这里提出了类似的问题: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'}

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

【问题讨论】:

标签: php


【解决方案1】:

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

答案是:

  • 问题1:因为大括号内的内容不仅仅是变量的名称,而是$_GLOBALS 数组中的键/值对。
  • 问题 2:它们将成为脚本 $Globals 的一部分,但您无法使用常规的 $var 表示法访问它们。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2019-07-04
      相关资源
      最近更新 更多