2013-05-05 65 views
2

我想解析从SmartyStreets(它是一个地址验证公司)返回的这些数据。PHP:如何解析stdClass对象?

下面是一个例子:

Array 
(
    [0] => stdClass Object 
     (
      [input_index] => 0 
      [candidate_index] => 0 
      [delivery_line_1] => 3785 Las Vegas Blvd S 
      [last_line] => Las Vegas NV 89109-4333 
      [delivery_point_barcode] => 891094333992 
      [components] => stdClass Object 
       (
        [primary_number] => 3785 
        [street_name] => Las Vegas 
        [street_postdirection] => S 
        [street_suffix] => Blvd 
        [city_name] => Las Vegas 
        [state_abbreviation] => NV 
        [zipcode] => 89109 
        [plus4_code] => 4333 
        [delivery_point] => 99 
        [delivery_point_check_digit] => 2 
       ) 

      [metadata] => stdClass Object 
       (
        [record_type] => H 
        [county_fips] => 32003 
        [county_name] => Clark 
        [carrier_route] => C024 
        [congressional_district] => 01 
        [building_default_indicator] => Y 
        [rdi] => Commercial 
        [latitude] => 36.10357 
        [longitude] => -115.17295 
        [precision] => Zip9 
       ) 

      [analysis] => stdClass Object 
       (
        [dpv_match_code] => D 
        [dpv_footnotes] => AAN1 
        [dpv_cmra] => N 
        [dpv_vacant] => N 
        [active] => Y 
        [footnotes] => B#H#L#M# 
       ) 

     ) 

) 

我是新来的工作对象,所以我很难理解它是如何工作。从上面的print_r $结果输出中,我试图访问[delivery_line1],[city_name],[state_abbreviation],[zipcode]和[plus4_code]。

如何在PHP中访问此树?

我已经试过这样:

echo $result["delivery_line_1"]; 

但是,让 “未定义指数:delivery_line_1”。

echo $result->delivery_line_1; 

但是,这给出了“试图获得非对象的属性”。

我错过了什么?谢谢!

+0

好的,这是一个*字符串*你正试图*解析*,或者这是一个*数组*,你正试图提取一个属性? – Ryan 2013-05-05 00:14:36

+0

这不是“解析”。这称为“遍历”或简单地访问变量。 – mario 2013-05-05 00:18:18

+0

如果你不喜欢乱用对象,你可以一直调用json_decode(json_encode($ arr),TRUE),并且有一个很好的关联数组,并且花费2个额外的调用。 – 2013-05-05 00:31:32

回答

5
$result[0]->delivery_line_1; 

$result是一个包含对象的数组。

+0

谢谢!请告诉我,什么是[0]?它是整个对象还是此对象的一部分?例如,如果在此查询中返回的数据更多,那么会有[1] stdClass对象? – Edward 2013-05-05 00:34:33

+1

你有一个编号索引的数组,像0,1,2等等,每个数组的值都是一个对象,所以首先你用[0]键(或者任何键)选择数组的值,然后你有对象,在那里你会使用箭头来访问某个属性。 – adeneo 2013-05-05 01:15:01