【问题标题】:JSON -> PHP array, difficult finding index path to certain valueJSON - > PHP数组,很难找到某个值的索引路径
【发布时间】:2011-01-17 19:58:42
【问题描述】:

我有一个 JSON 字符串,我使用“json_decode”将它转换为关联的 PHP 数组。出于某种原因,我似乎无法弄清楚如何在数组中找到我正在寻找的值的索引路径。

这是 JSON 字符串:

    {
  "status": "OK",
  "results": [ {
    "types": [ "street_address" ],
    "formatted_address": "175 Hemenway St, Boston, MA 02115, USA",
    "address_components": [ {
      "long_name": "175",
      "short_name": "175",
      "types": [ "street_number" ]
    }, {
      "long_name": "Hemenway St",
      "short_name": "Hemenway St",
      "types": [ "route" ]
    }, {
      "long_name": "Boston",
      "short_name": "Boston",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "Boston",
      "short_name": "Boston",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Suffolk",
      "short_name": "Suffolk",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "Massachusetts",
      "short_name": "MA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "02115",
      "short_name": "02115",
      "types": [ "postal_code" ]
    } ],
    "geometry": {
      "location": {
        "lat": 42.3411740,
        "lng": -71.0912860
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 42.3380264,
          "lng": -71.0944336
        },
        "northeast": {
          "lat": 42.3443216,
          "lng": -71.0881384
        }
      }
    }
  } ]
}

这里是 PHP 中关联数组的 var_dump 输出

array(2) { ["status"]=> string(2) "OK" ["results"]=> array(1) { [0]=> array(4) { ["types"]=> array(1) { [0]=> string(14) "street_address" } ["formatted_address"]=> string(38) "175 Hemenway St, Boston, MA 02115, USA" ["address_components"]=> array(8) { [0]=> array(3) { ["long_name"]=> string(3) "175" ["short_name"]=> string(3) "175" ["types"]=> array(1) { [0]=> string(13) "street_number" } } [1]=> array(3) { ["long_name"]=> string(11) "Hemenway St" ["short_name"]=> string(11) "Hemenway St" ["types"]=> array(1) { [0]=> string(5) "route" } } [2]=> array(3) { ["long_name"]=> string(6) "Boston" ["short_name"]=> string(6) "Boston" ["types"]=> array(2) { [0]=> string(8) "locality" [1]=> string(9) "political" } } [3]=> array(3) { ["long_name"]=> string(6) "Boston" ["short_name"]=> string(6) "Boston" ["types"]=> array(2) { [0]=> string(27) "administrative_area_level_3" [1]=> string(9) "political" } } [4]=> array(3) { ["long_name"]=> string(7) "Suffolk" ["short_name"]=> string(7) "Suffolk" ["types"]=> array(2) { [0]=> string(27) "administrative_area_level_2" [1]=> string(9) "political" } } [5]=> array(3) { ["long_name"]=> string(13) "Massachusetts" ["short_name"]=> string(2) "MA" ["types"]=> array(2) { [0]=> string(27) "administrative_area_level_1" [1]=> string(9) "political" } } [6]=> array(3) { ["long_name"]=> string(13) "United States" ["short_name"]=> string(2) "US" ["types"]=> array(2) { [0]=> string(7) "country" [1]=> string(9) "political" } } [7]=> array(3) { ["long_name"]=> string(5) "02115" ["short_name"]=> string(5) "02115" ["types"]=> array(1) { [0]=> string(11) "postal_code" } } } ["geometry"]=> array(3) { ["location"]=> array(2) { ["lat"]=> float(42.341174) ["lng"]=> float(-71.091286) } ["location_type"]=> string(7) "ROOFTOP" ["viewport"]=> array(2) { ["southwest"]=> array(2) { ["lat"]=> float(42.3380264) ["lng"]=> float(-71.0944336) } ["northeast"]=> array(2) { ["lat"]=> float(42.3443216) ["lng"]=> float(-71.0881384) } } } } } }

理想情况下,我想要索引“位置”下的数组(lat & lng 键下的值)

我似乎无法比 array_name["results"] 走得更远

是否有替代 var_dump 的替代方法,它可以对多级数组进行行分隔和缩进,以便我理解它们?我宁愿使用直接路径,也不愿递归搜索整个数组以找到我要查找的内容。谢谢!

【问题讨论】:

    标签: php arrays json geocoding


    【解决方案1】:

    您是否尝试过以这种方式访问​​“位置”?:

    $location = $array_name['results'][0]['geometry']['location'];
    $lat = $location['lat'];
    $lng = $location['lng'];
    

    【讨论】:

    • 就是这样,谢谢@scoffey。我很难匹配开始/结束括号并确定一个数组何时结束而另一个数组何时开始。是否有一种好的技术,或者您是否非常擅长查看数据字符串并理解它们?哈哈
    • 像 vim 这样的优秀编辑器会突出显示匹配的开始/结束括号。顺便说一句,print_rvar_dump 的替代品。见:stackoverflow.com/questions/1168175/…
    【解决方案2】:

    是否有替代 var_dump 的替代方法,可以对多级数组进行行分隔和缩进,以便我理解它们?

    Print_r、var dump 和 var 将所有输出导出为单独的多行文本。

    http://ca2.php.net/print_r
    http://ca2.php.net/manual/en/function.var-dump.php
    http://ca2.php.net/manual/en/function.var-export.php

    您只是没有看到它,因为您正在查看 HTML 文档的呈现结果,而不是原始文本。查看源代码,或用<br/> HTML 元素替换新行,或将输出包含在<pre> 标记中。

    请记住,浏览器在渲染时倾向于忽略空格,例如换行符和缩进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2011-02-26
      • 2017-11-08
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多