php和嵌套json:我如何访问这个元素?

use*_*609 9 php json

这是json文本:

{
"data": {
    "current_condition": [{
        "cloudcover": "75",
        "humidity": "63",
        "observation_time": "03:41 PM",
        "precipMM": "0.0",
        "pressure": "1020",
        "temp_C": "15",
        "temp_F": "59",
        "visibility": "16",
        "weatherCode": "116",
        "weatherDesc": [{
            "value": "Partly Cloudy"
        }],
        "weatherIconUrl": [{
            "value": "http:\/\/cdn.worldweatheronline.net\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png"
        }],
        "winddir16Point": "SSE",
        "winddirDegree": "160",
        "windspeedKmph": "7",
        "windspeedMiles": "4"
    }],
    "request": [{
        "query": "Northville, United States Of America",
        "type": "City"
    }],
    "weather": [{
        "date": "2013-09-24",
        "precipMM": "0.0",
        "tempMaxC": "20",
        "tempMaxF": "67",
        "tempMinC": "8",
        "tempMinF": "47",
        "weatherCode": "113",
        "weatherDesc": [{
            "value": "Sunny"
        }],
        "weatherIconUrl": [{
            "value": "http:\/\/cdn.worldweatheronline.net\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
        }],
        "winddir16Point": "ESE",
        "winddirDegree": "111",
        "winddirection": "ESE",
        "windspeedKmph": "10",
        "windspeedMiles": "6"
    }]
}
Run Code Online (Sandbox Code Playgroud)

}

我试图回应'temp_F'并且它无效.我无法弄清楚我做错了什么.我得到了这个:

$url = file_get_contents("http://blahblahblahblah");
$arr = json_decode($url,true);
Run Code Online (Sandbox Code Playgroud)

这就是失败的地方.我已经完成了var_dump,所以我知道数据存在.但是我尝试过的每次"回声"尝试都会导致"数组"显示在屏幕上.我尝试过以下几种变体:

echo $arr->{'data'}->{'current_condition[0]'}->{'temp_F'};
Run Code Online (Sandbox Code Playgroud)

有人能告诉我我做错了什么吗?谢谢!

Ama*_*ali 14

json_decode()with TRUEas second parameter为您提供关联数组.但是您目前正在尝试将其作为对象访问.

请尝试以下方法:

echo $arr['data']['current_condition'][0]['temp_F'];
Run Code Online (Sandbox Code Playgroud)