对象变量中的PHP方括号 - 如何调用变量

时间:2015-11-13 14:36:54

标签: php

我有一个简单的答案,我无法解决:

var_dump(obj)=

object(stdClass)#15 (3) {
  ["properties"]=>
  object(stdClass)#14 (2) {
    ["user_name"]=>
    string(4) "somename"
    ["email_address"]=>
    string(12) "test@test.com"
  ["arrays"]=>
  object(stdClass)#17 (1) {
    ["sites[]"]=>
    object(stdClass)#18 (4) {
      ["0"]=>
      int(1)
      ["1"]=>
      int(1)
      ["2"]=>
      int(0)
      ["3"]=>
      int(0)
    }
  }
}

如何在'obj'中调用'sites []'对象?

我尝试了以下内容:

obj->sites[]
obj->{'sites[]'}

这两个选项都不起作用......

1 个答案:

答案 0 :(得分:3)

清理生成该对象的代码可能更好,但您应该能够通过以下方式访问sites[]对象:

$sites = $obj->arrays->{'sites[]'};

但是$sites仍然是一个对象,所以你需要以类似的尴尬方式访问它的元素:

echo $sites->{'0'};

最好在那时将它强制转换为数组:

$sites = (array) $obj->arrays->{'sites[]'};

然后您可以作为数组访问:

echo $sites[0];

编辑,接缝无法访问由数字字符串索引的数组元素。

一个更好的选择(正如我刚发布的SO question所发现的那样)将使用get_object_vars

$sites = get_object_vars($obj->arrays->{'sites[]'});

然后你可以作为一个数组访问:

echo $sites[0];