访问嵌套对象数组

问题描述:

嗨,我似乎无法得到语法正确的在这里,我只是想看看是否存在类型, 我已经试过访问嵌套对象数组

if($obj->type) /* do something */ 
if($obj[0]->type) /* do something */ 
if($obj->type[0]) /* do something */ 

在此

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', 
)), 
)) 

但似乎无法得到它的权利,我相信它是与 [0]是一个int,而不是为varchar,但我不知道....

+0

'$ OBJ [0] [ '型']'? – 2012-02-22 18:18:32

+0

你试过'$ obj-> 0-> type'吗? – rodneyrehm 2012-02-22 18:18:52

+0

我只是猜测,但我会想到$ obj [0] ['type'] - 你试过这个吗? – 2012-02-22 18:21:27

输出在问题由var_export创建,它将对象的数据表示为array。但不要因此误导,它实际上是一个对象。

对象属性是由这句法访问:

$obj->property 

在你的情况下,属性名为0这是很难的PHP在明码处理,因为它不是你可以写一个属性名称,马上像这样的:

$obj->0 

相反,你需要通过封闭它告诉PHP解析器的名称是到{}

$obj->{0} 

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

$obj->{0}->type 

希望这是有帮助的,问题来了,不时,这是一个相关的一个具有更多相关链接:How do I access this object property?

PHP手册中有这个记录,但在Variable variables entry不是很明显:

为了使用可变的变量与数组,必须解决一个模棱两可的问题。也就是说,如果你编写$$a[1],那么解析器需要知道你是否打算使用$a[1]作为变量,或者如果你想要$$a作为变量,然后是该变量的[1]索引。为解决这种模糊性的语法是:${$a[1]}对于所述第一壳体和${$a}[1]用于第二。

你试过:

<?php 
    if (property_exists($obj, 'type')) { 
     // Do something 
    } 
?>