14

我正在处理这个 PHP 代码协作,似乎有些人像这样访问 PHP StdClass 字段

$body->head

和其他人喜欢

$body->{'head'}

据我所知,这些是等价的。他们是吗?使用哪个重要吗?你更喜欢哪种方式?这里有什么要注意的怪癖吗?

4

2 回答 2

21

它们是等价的。如果您想使用可恶的属性名称,您只需要第二个版本,例如:

$data->{'what * the ! thing'}

如果将纯数据数组转换为对象,有时会发生这种情况。

但也有双引号版本,当您实际需要变量属性名称(基本上是对象的变量变量)时,它更有意义:

$data->{"attr$index"}
于 2011-04-18T08:22:13.587 回答
2

我需要创建具有异常属性名称的类,例如 {'field-name'}。

class myclass
{
    public {'field-name-with-minus-sign'} = "something";
}

身份证不起作用。为什么?我不想使用这样的东西:

$myclass = new stdClass();
$myclass->{'dumb-property-name'}

因为我有很多这样的属性。

于 2012-02-17T02:55:06.933 回答