访问嵌套对象数组

ehi*_*ime 1 php oop object

嘿家伙我似乎无法在这里得到语法,我只是想看看类型是否存在,我已经尝试过了

if($obj->type)    /* do something */
if($obj[0]->type) /* do something */
if($obj->type[0]) /* do something */
Run Code Online (Sandbox Code Playgroud)

就这个

stdClass::__set_state(
array(
   '0' => 
  stdClass::__set_state(
  array(
     'report_number' => '555',
     'type' => 'citrus',
     'region' => 'Seattle',
     'customer_number' => '9757',
     'customer' => 'The Name',
     'location' => 'West Seattle, WA',
     'shipper' => 'Yamato Transport',
     'po' => '33215',
     'commodity' => 'RARE',
     'label' => 'PRODUCE',
  )),
))
Run Code Online (Sandbox Code Playgroud)

但似乎无法做到正确,我相信它与[0]是一个int而不是varchar有关,但我不知道....

hak*_*kre 7

创建问题中的输出var_export,表示对象的数据为array.但不要误导,它实际上是一个对象.

通过以下语法访问对象属性:

$obj->property
Run Code Online (Sandbox Code Playgroud)

在您的情况下,该属性被命名0为PHP在简单代码中难以处理,因为它不是您可以立即写入的属性名称,如下所示:

$obj->0
Run Code Online (Sandbox Code Playgroud)

相反,您需要通过将其括起来告诉PHP解析器名称是什么{}:

$obj->{0}
Run Code Online (Sandbox Code Playgroud)

然后,您可以进一步遍历以访问以下type属性0:

$obj->{0}->type
Run Code Online (Sandbox Code Playgroud)

希望这有用,问题不时出现,这是一个相关的链接:更多相关链接:如何访问此对象属性?.

PHP手册记录了这一点,但在变量变量条目上并不是很明显:

为了将变量变量与数组一起使用,您必须解决模糊问题.也就是说,如果你编写,$$a[1]那么解析器需要知道你$a[1]是否想要$$a用作变量,或者你想要作为变量,然后是该变量的[1]索引.解决这种歧义的语法是:${$a[1]}第一种情况和${$a}[1]第二种情况.