访问JSON变量的奇怪响应

时间:2013-09-23 15:56:47

标签: php file-get-contents json

我有这段代码:

<?php
$jsonurl = "http://api.wipmania.com/json";
$jsonfgc = file_get_contents($jsonurl);
$json = json_decode($jsonfgc, true);

foreach ( $json["address"] as $address => $country_code )
    {   
      echo $address["country_code"];
    }
?>

然而,当我打印出来时,我只得到“cccccr”。我只试用echo $country_code但我得到的是“北美美国 - 美国 - ”。有什么帮助吗?

5 个答案:

答案 0 :(得分:0)

如果您确实尝试获取国家/地区代码,请执行以下操作:

echo $json['address']['country_code'];

那里不需要循环。


  

我尝试回复$ country_code,但我得到“North AmericaNA-United StatesUS-”。有什么帮助吗?

有关为何发生这种情况的解释:

您可能没有在代码中添加任何换行符。所以它看起来好像是一个字符串。实际上并非如此。

尝试:

foreach ( $json["address"] as $address => $country_code )
{   
    echo $country_code."<br/>\n";
}

输出应为:

North America
NA
-
United States
US
-

See the difference!

答案 1 :(得分:0)

为什么你使用$address作为数组它只是一个索引。

如果您只想要国家/地区代码

使用:

//foreach ( $json["address"] as $address => $country_code )
//{   
  echo $json["address"]["country_code"];
//}

答案 2 :(得分:0)

首先尝试将其打印出来,这样可以更轻松地将其弄清楚。 (用于课程的调试)

var_dump($json); // or print_r( $json ); if you want

要打印键和值,您可以使用:

foreach( $json['address'] AS $index => $value ) {
  echo "$index - $value<br />";
}

答案 3 :(得分:0)

<?php
$jsonurl = "http://api.wipmania.com/json";
$jsonfgc = file_get_contents($jsonurl);
$json = json_decode($jsonfgc, true);

echo $json["address"]["country_code"]; //if json return single value
//if return multiple then execute it
foreach ( $json as $key => $val )
    {   
      if($key=="address"){
      echo $json[$key]['country_code'];
      };

    }
?>

答案 4 :(得分:0)

此处您不需要foreach。只需使用:

echo $json["address"]["country_code"];

请注意,在PHP 5.4及更高版本中,您的代码实际上会生成警告:“警告:非法字符串偏移'country_code'”。在foreach循环(枚举对象中的所有属性)中,$address是一个字符串(属性名称),而不是数组。