URL输出JSON - PHP

时间:2014-02-26 01:34:15

标签: php json

我遇到了问题而且找不到错误。它不能是语法错误。

基本上,即使URL输出JSON,以下输出也没有。

$jsonurl = 'http://www.geopostcode.org.uk/api/SE92EQ.json';
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);

foreach ( $json_output->wgs84 as $results )
{
echo "{$results->lat}<br />";
echo "{$results->lon}<br />";

帮我找到错误。 wgs​​84是父母,但是,无法找到lat和lon。

谢谢。

编辑:$ json_output的打印位于此处 - http://pastebin.com/ZQRxhjRJ

2 个答案:

答案 0 :(得分:1)

当您print_r($json_output);(由h2ooooooo建议)时,您会看到以下部分

[wgs84] => stdClass Object
    (
        [lat] => 51.446973
        [lon] => 0.078981
    )

这意味着wgs84是一个对象,而不是一个数组。那你为什么要迭代呢?

echo $json_output->wgs84->lat."<br />";
echo $json_output->wgs84->lon."<br />";

et voila。

答案 1 :(得分:0)

只需在true函数中添加第二个参数json_decode()即可。这将返回一个数组而不是一个对象。

您的代码应如下所示:

$jsonurl = 'http://www.geopostcode.org.uk/api/SE92EQ.json';
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json, true);

foreach ( $json_output['wgs84'] as $results ) {
    echo "{$results['lat']}<br />";
    echo "{$results['lon']}<br />";
}