使用 PHP 解析 Google 高程结果

发布于 2024-12-21 12:57:11 字数 479 浏览 0 评论 0原文

我对 JSON 和解析很陌生。从 Google Elevation API 请求海拔时,我得到以下结果。

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 39.7391536,
      "lng": -104.9847034
    },
    "elevation": 1608.8402100
  } ]
}

解析时,我不知道如何使用 json_decode 结果有效引用海拔。我的删节代码如下:

$json_string = file_get_contents($url);
$parsed_json = json_decode($json_string);
$geoElevation = $parsed_json->{'elevation'};

谁能告诉我为什么我无法使用上面的方法访问“海拔”值?

I'm new to JSON and parsing. I get the following results when requesting an elevation from the Google Elevation API.

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 39.7391536,
      "lng": -104.9847034
    },
    "elevation": 1608.8402100
  } ]
}

When parsing, I don't know how to effectively reference the elevation using the json_decode results. My abridged code is below:

$json_string = file_get_contents($url);
$parsed_json = json_decode($json_string);
$geoElevation = $parsed_json->{'elevation'};

Can anyone tell me why I can't access the "elevation" value using the above?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

请持续率性 2024-12-28 12:57:11

试试这个:

$json_string = file_get_contents($url);
$parsed_json = json_decode($json_string);

echo $parsed_json->results[0]->elevation;

或者如果您更喜欢使用数组:

$json_string = file_get_contents($url);
$parsed_json = json_decode($json_string, TRUE);

echo $parsed_json['results'][0]['elevation'];

第二个参数:

当为 TRUE 时,返回的对象将转换为关联数组。
来自 json_encode 手册

Try this:

$json_string = file_get_contents($url);
$parsed_json = json_decode($json_string);

echo $parsed_json->results[0]->elevation;

or if you prefer using array:

$json_string = file_get_contents($url);
$parsed_json = json_decode($json_string, TRUE);

echo $parsed_json['results'][0]['elevation'];

The second argument:

When TRUE, returned objects will be converted into associative arrays.
from the json_encode manual

最初的梦 2024-12-28 12:57:11

您应该使用 print_r($parsed_json) 来更好地可视化数据结构:

$parsed_json
(
    [status] => OK
    [results] => Array
        (
            [0] => Array
                (
                    [location] => Array
                        (
                            [lat] => 39.739153600000001631542545510456
                            [lng] => -104.98470340000000078362063504755
                        )    
                    [elevation] => 1608.8402100000000700674718245864
                )
        )
)

这是一个数组,可以通过使用 json_decode($json_string, TRUE); 获得。这使得遍历条目变得更加容易。

在您的情况下,您想要:

 print $parsed_json["results"][0]["elevation"];

通常您需要在数字级别上进行foreach。但如果您只期望一个结果,那么 [0] 就完全可以使用。

You should use print_r($parsed_json) to get a better visualization of your data structure:

$parsed_json
(
    [status] => OK
    [results] => Array
        (
            [0] => Array
                (
                    [location] => Array
                        (
                            [lat] => 39.739153600000001631542545510456
                            [lng] => -104.98470340000000078362063504755
                        )    
                    [elevation] => 1608.8402100000000700674718245864
                )
        )
)

This is an array, which you get by using json_decode($json_string, TRUE);. That makes it easier to traverse the entries.

In your case you want:

 print $parsed_json["results"][0]["elevation"];

Normally you would want to foreach over the numeric levels. But if you only expect one result, then [0] is perfectly fine to use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文