我有这段代码:
<?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
但我得到的是“北美美国 - 美国 - ”。有什么帮助吗?
答案 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
-
答案 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
是一个字符串(属性名称),而不是数组。