我正在PHP中对Web服务执行HTTP GET请求。我作为JSON得到回应。 但是我在打印JSON中的一些值时遇到了一些错误,如inkey2& KEY3。 我使用的GET请求是正确的。也没有语法错误。 URL是正确的,即使我在问题中指定的URL有点假。 :)
我作为HTTP GET请求的响应获得的JSON
{
"name":
{
"key1": "salala",
"key2":
{
"inkey1": "hike",
"inkey2":
[
{
"@sunny": "fake",
"@leone": "take"
},
{
"@sunny": "make",
"@leone": "bake"
},
{
"@sunny": "cake",
"@leone": "drake"
},
{
"@sunny": "sake",
"@leone": "lake"
}
],
"inkey3": "bike"
},
"key3":
[
"batman",
"superman",
"spiderman",
"ironman",
"hancock"
],
"key4": "nike"
}
}
// HTTP GET请求
$url='iwonttellyaguys.com';
$jsondata= httpGet($url);
$val_array = json_decode($jsondata, true);
echo'</br>';
echo'</br>';
//To print value salala (successful)
$print_salala=$val_array['name']['key1'];
echo'</br>';
echo'</br>';
//To print value hike & bike (successful)
$print_hike=$val_array['name']['key2']['inkey1'];
$print_bike=$val_array['name']['key2']['inkey3'];
echo'</br>';
echo'</br>';
//To print contents of key4. i.e, to print value nike (successful)
$print_nike=$val_array['name']['key4'];
echo'</br>';
echo'</br>';
//To print contents of inkey2 (Error)
//Incorrect value being printed.
$print_inkey2=$val_array['name']['key2']['inkey2'];
foreach($print_inkey2 as $key=>$value)
{
$sunny_leone=$value['@sunny']['@leone'];
echo $sunny_leone;
}
This foreach loop returns 3 as output...I am trying to print the contents, not the count.
//To print contents of key3 (Error)
//Incorrect value being printed.
echo'</br>';
echo'</br>';
$hero=$val_array['name']['key3'];
$count_hero=count($hero);
for($i=0;$i<$count_hero;$i++)
{
echo $hero[$i];
}
// Function Definition of httpGet
function httpGet($url)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
// curl_setopt($ch,CURLOPT_HEADER, false);
$output=curl_exec($ch);
curl_close($ch);
return $output;
}
为什么我无法打印key3&amp;的内容? inkey2 ???
答案 0 :(得分:0)
只需调用javaScript函数,该函数将使用ajax lik将corrdiantes传递给PHP脚本
<script>
function sendCoords(_lat,_long){
$.ajax({
url: "yourdomain.com/coords.php",
data:{lat:_lat,long:_long}
});
}
</script>
您的coords.php脚本应如下所示:
$lat = $_REQUEST['lat'];
$lang = $_REQUEST['long'];
///Do something
答案 1 :(得分:0)
你应该使用:
$print_inkey2=$val_array['name']['key2']['inkey2'];
foreach($print_inkey2 as $key=>$value)
{
$sunny_leone=$value['@sunny'].$value['@leone'];
echo $sunny_leone;
}
这部分很好,并且在你的代码中工作。
$hero=$val_array['name']['key3'];
$count_hero=count($hero);
for($i=0;$i<$count_hero;$i++)
{
echo $hero[$i];
}
希望它有所帮助。
答案 2 :(得分:0)
这很好用:
foreach($printinkey2 as $key=>$value)
{
print $key." @sunny ".$value['@sunny'].PHP_EOL;
print $key." @leone ". $value['@leone'].PHP_EOL;
}