代码之家  ›  专栏  ›  技术社区  ›  Nathan Long

如何访问以数字开头的对象属性?

  •  21
  • Nathan Long  · 技术社区  · 14 年前

    我正在处理一个现有的代码库,得到了一个带有以数字开头的属性的对象,如果调用它,我就可以看到它 print_r 在物体上。

    假设是 $Beeblebrox->2ndhead

    如何获得该属性?

    2 回复  |  直到 7 年前
        1
  •  43
  •   Pascal MARTIN    14 年前

    这个呢:

    $Beeblebrox->{'2ndhead'}
    


    实际上,您可以对几乎任何类型的变量执行此操作—即使是对于不是类属性的变量。

    例如,您可以考虑一个包含空格的变量名;以下语法将起作用:

    ${"My test var"} = 10;
    echo ${"My test var"};
    

    $My test var = 10;
    echo $My test var;
    


    我唯一能找到的 {} 变量在这里: Variable parsing


    但是这里有一篇文章展示了一些其他的可能性,并且比我在这里发布的例子更进一步: PHP Variable Names: Curly Brace Madness

    下面是另一个例子,它提供了一些额外的信息,这些信息是如何被解析的: PHP grammar notes

        2
  •  5
  •   Nathan Long    14 年前

    我可以这样访问该属性:

    $Beeblebrox->{'2ndhead'}
    

    拥有一个以数字开头的属性或变量实际上是不合法的,但是像这样的动态引用使之成为可能。在我看来这是语言上的一个奇怪的漏洞。

        3
  •  0
  •   David Buck Richard Ferris    4 年前

    你也可以这样做:

    $aux = '2ndhead';
    $Beeblebrox->$aux;