2

我正在尝试执行使用 Google 的时区 API 查找给定坐标的时区的简单任务。然后我试图解析返回的 JSON 只是为了显示时区本身。有谁知道我在这里做错了什么?任何帮助都会很棒!谢谢!

<?php

$jsonObject = file_get_contents("https://maps.googleapis.com/maps/api/timezone/json?    
timestamp=0&sensor=true&location=39.6034810,-119.6822510");

foreach($jsonObject as $p)
{
    echo "$p[timeZoneId]";
}

?>
4

3 回答 3

4

file_get_contents返回一个字符串:

$object = json_decode($jsonObject);
echo $object->timeZoneId;
于 2013-01-27T06:49:54.393 回答
3

您需要解码 json 对象。它现在只是一个字符串, foreach 将无法使用。(仅限数组或对象)。

<?php

$jsonObject = file_get_contents("https://maps.googleapis.com/maps/api/timezone/json?    
timestamp=0&sensor=true&location=39.6034810,-119.6822510");

$jsonObject = json_decode($jsonObject);

foreach($jsonObject as $p)
{
    echo "$p is $jsonObject[$p]";
}

?>
于 2013-01-27T06:49:48.220 回答
1

您需要将来自 Google 的响应(实际上只是 JSON 格式的文本)解析为 PHP 数组。使用这样的东西:

$json_text = file_get_contents(...);
$obj = json_decode($json_text, true);
foreach ($obj as $p)
{
    echo "$p[timeZoneId]";
}

我认为您会想要传递true给,json_decode以便将结果转换为易于使用的关联数组。阅读此处了解更多信息。祝你好运。

于 2013-01-27T06:53:05.980 回答