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


PHP square brackets in object variable - how to call the variable

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

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[]'}

两个选项都不起作用。。。

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

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

然而,$sites仍然是一个对象,因此您需要以类似的尴尬方式访问其元素:

echo $sites->{'0'};

此时最好将其强制转换为数组:
$sites = (array) $obj->arrays->{'sites[]'};

然后您可以作为数组访问:
echo $sites[0];

EDIT,不能访问由数字字符串索引的数组元素。

一个更好的选择(正如我刚刚发布的一个SO问题所发现的那样)是使用get_object_vars:

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

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

echo $sites[0];