0

我有这个代码:

<?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”。我试着只是echoing $country_code,但我得到了“North AmericaNA-United StatesUS-”。有什么帮助吗?

4

5 回答 5

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
-

看到不同!

于 2013-09-23T16:01:42.553 回答
0

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

如果你只想要国家代码

利用:

//foreach ( $json["address"] as $address => $country_code )
//{   
  echo $json["address"]["country_code"];
//}
于 2013-09-23T16:05:49.497 回答
0

你不需要foreach这里。只需使用:

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

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

于 2013-09-23T16:26:27.897 回答
0

尝试先打印出来,这样会更容易弄清楚。(当然用于调试)

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

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

foreach( $json['address'] AS $index => $value ) {
  echo "$index - $value<br />";
}
于 2013-09-23T16:21:27.487 回答
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'];
      };

    }
?>
于 2013-09-23T16:22:41.420 回答