从PHP进行JSON调用

时间:2012-02-07 15:03:45

标签: php json

不知道为什么,但我没有从json电话回来。我回复了内容,并将其粘贴到我的浏览器的网址栏中,并且可以正常工作。这里是否存在我需要解决的某种域名问题?

$connect = open_db();
$result = mysql_query("SELECT search_id, search_term FROM search WHERE search_poi_id IS NULL");
while($row = mysql_fetch_assoc($result)){
    $call = "http://maps.google.com/maps/api/geocode/json?address=".$row["search_term"]."&sensor=false";
    $json = file_get_contents($call);
    print_r($json);
}
close_db($connect);

3 个答案:

答案 0 :(得分:1)

file_get_contents()可能并不总是适用于外部网址。来自php.net:

  

如果已启用fopen包装,则可以使用此函数将URL用作文件名。有关如何指定文件名的更多详细信息,请参阅fopen()。有关各种包装器具有哪些功能的信息,使用说明以及它们可能提供的任何预定义变量的信息,请参阅支持的协议和包装器。

答案 1 :(得分:0)

所以回声有效吗?那么,有没有有效的JSON?现在问题是什么?如果你想要JSON到一个数组,那么json_decode()就是你想要的。

有关详细信息,请参阅http://php.net/manual/en/function.json-decode.php

答案 2 :(得分:0)

如果您想进一步处理数据,可以这样做:

$data = array();
$connect = open_db();
$result = mysql_query("SELECT search_id, search_term FROM search WHERE search_poi_id IS NULL");
while($row = mysql_fetch_assoc($result)){
    $call = "http://maps.google.com/maps/api/geocode/json?address=".$row["search_term"]."&sensor=false";
    $data[] = json_decode(file_get_contents($call));
}
close_db($connect);

foreach($data as $d)
    print_r($d);

这些数据应该是一个数组数组然后你可以做你想做的任何事情......

编辑:

如果file_get_contents()无效,请尝试以下操作:

$data = array();
$connect = open_db();
$result = mysql_query("SELECT search_id, search_term FROM search WHERE search_poi_id IS NULL");
while($row = mysql_fetch_assoc($result)){
    $call = "http://maps.google.com/maps/api/geocode/json?address=".$row["search_term"]."&sensor=false";
    $handle = fopen($call, "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    $data[] = json_decode($contents);
}
close_db($connect);

foreach($data as $d)
    print_r($d);