2013-05-06 40 views
0

我使用下面的代碼調用了一個webservice。現在我想回應一些它的價值。但我無法。我嘗試了一些選擇,但他們沒有工作。Echo JSON值

<?php 
    $api_url = "myurl"; 
    $response = file_get_contents($api_url); 
    $my_array = json_decode($response, true);  
?> 

上面的代碼給了我JSON resonse

{ 
    "places":{ 
     "place":[ 
      { 
       "place_id":"FHa5VXVTU7MbX9qW", 
       "woeid":"2192348", 
       "latitude":"32.433", 
       "longitude":"74.366", 
       "place_url":"\/Pakistan\/Punjab\/Bhopalwala", 
       "place_type":"locality", 
       "place_type_id":"7", 
       "timezone":"Asia\/Karachi", 
       "name":"Bhopalwala, Punjab, Pakistan", 
       "woe_name":"Bhopalwala" 
      } 
     ], 
     "latitude":"32.45", 
     "longitude":"74.34", 
     "accuracy":"16", 
     "total":1 
    }, 
    "stat":"ok" 
} 

我試圖呼應woe_name。

echo $my_array['places']['place']['woe_name']; 
print $my_array->places["0"]->place->woe_name; 

這裏的var_dump

array(2) { 
    ["places"]=> 
    array(5) { 
    ["place"]=> 
    array(1) { 
     [0]=> 
     array(10) { 
     ["place_id"]=> 
     string(16) "FHa5VXVTU7MbX9qW" 
     ["woeid"]=> 
     string(7) "2192348" 
     ["latitude"]=> 
     string(6) "32.433" 
     ["longitude"]=> 
     string(6) "74.366" 
     ["place_url"]=> 
     string(27) "/Pakistan/Punjab/Bhopalwala" 
     ["place_type"]=> 
     string(8) "locality" 
     ["place_type_id"]=> 
     string(1) "7" 
     ["timezone"]=> 
     string(12) "Asia/Karachi" 
     ["name"]=> 
     string(28) "Bhopalwala, Punjab, Pakistan" 
     ["woe_name"]=> 
     string(10) "Bhopalwala" 
     } 
    } 
    ["latitude"]=> 
    string(5) "32.45" 
    ["longitude"]=> 
    string(5) "74.34" 
    ["accuracy"]=> 
    string(2) "16" 
    ["total"]=> 
    int(1) 
    } 
    ["stat"]=> 
    string(2) "ok" 
} 

我該怎麼辦呢?

+0

你嘗試了var_dump或print_r來看看你會得到什麼? – Duniyadnd 2013-05-06 22:48:39

+0

您發佈的JSON似乎不是有效的 – 2013-05-06 22:51:32

+0

我不知道這是否是您的問題,但對我而言,這看起來不像是有效的JSON。 http://jsonlint.com/ – Cypher 2013-05-06 22:51:52

回答

4
$my_array = json_decode($response); 
$my_array->places->place[0]->woe_name; 

my_array包含一個對象,places包含對象,place包含具有嵌套的對象陣列。

1

嘗試:

echo $my_array['places']['place'][0]['woe_name']; 

如果json_decode第二個參數是true它將返回一個數組。如果您不確定,可以使用var_dump來檢查可變長度類型。

在Json中,花括號{}用於"key": value對的對象,方括號[]用於對象數組。

1

它在json的開頭忽略了{

有了它,它給:

$my_array['places']['place'][0]['woe_name'] 
0

看起來你的JSON缺少捲曲brackey - 你需要在一開始創建一個,它缺少一個

「{」之前「的地方」