如何访问以数字开头的对象属性?
我正在处理一个现有的代码库,并取回了一个对象,该对象的属性以数字开头,如果我调用该对象,我可以看到它。print_r
假设它是.当我尝试像这样访问它时,我收到一个错误:$Beeblebrox->2ndhead
解析错误:语法错误、意外T_LNUMBER、预期T_STRING或T_VARIABLE或“{”或“$”
如何获取该属性?
我正在处理一个现有的代码库,并取回了一个对象,该对象的属性以数字开头,如果我调用该对象,我可以看到它。print_r
假设它是.当我尝试像这样访问它时,我收到一个错误:$Beeblebrox->2ndhead
解析错误:语法错误、意外T_LNUMBER、预期T_STRING或T_VARIABLE或“{”或“$”
如何获取该属性?
那这个呢:
$Beeblebrox->{'2ndhead'}
实际上,您几乎可以对任何类型的变量执行此操作 - 即使对于不是类属性的变量也是如此。
例如,您可以考虑包含空格的变量名称 ;以下语法将起作用:
${"My test var"} = 10;
echo ${"My test var"};
即使很明显,你也无法做这样的事情:
$My test var = 10;
echo $My test var;
不知道它的内部是如何工作的,但是...经过一番搜索,我在PHP手册中找不到任何有关此内容的信息。
我唯一能找到的关于变量和变量的东西在这里:变量解析 - 但与当前主题并不完全相关......{}
但是这里有一篇文章展示了其他一些可能性,并且比我在这里发布的示例更进一步:PHP变量名称:卷曲支撑疯狂
这是另一个,它提供了一些关于解析方式的补充信息 :PHP语法注释
在我问这个问题之前,我实际上从一位同事那里找到了答案,但在Google上找不到它,所以我想把它贴在这里,以防其他人有同样的问题。
我可以像这样访问该属性:
$Beeblebrox->{'2ndhead'}
拥有以数字开头的属性或变量并不合法,但不知何故,像这样的动态引用使它成为可能。对我来说,这似乎是语言中的一个奇怪的漏洞。