2013-05-05 152 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