0

我使用下面的代码调用了一项网络服务。现在我想从它中呼应一些价值。但我不能。我尝试了一些选项,但没有奏效。

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

上面的代码给了我 JSON 共鸣

{
    "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"
}

我该怎么做?

4

4 回答 4

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

my_array包含一个对象,places包含一个对象,place包含一个带有嵌套对象的数组。

于 2013-05-06T22:51:51.897 回答
1

尝试:

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

如果json_decode的第二个参数是true它将返回一个数组。如果不确定,可以使用var_dump检查变量类型。

在 Json 中,花括号{}用于"key": value成对的对象,方括号[]用于对象数组。

于 2013-05-06T22:52:43.810 回答
1

{在您的 json 开头缺少 a。

有了它,它给出了:

$my_array['places']['place'][0]['woe_name']
于 2013-05-06T22:54:22.847 回答
0

看起来您的 JSON 缺少一个花括号 - 您需要在开始时创建一个,它缺少一个

'{' 在“地方”之前

于 2013-05-06T23:04:19.927 回答