首页 > 解决方案 > 如何在php中通过过滤器获取地图数组

问题描述

我想获取过滤器数组的值。因为数组是动态索引位置我有响应json如下

{
   "plus_code" : {
      "compound_code" : "589V+GM Kasihan, Bantul Regency, Special Region of Yogyakarta, Indonesia",
      "global_code" : "6P4G589V+GM"
   },
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "11",
               "short_name" : "11",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Jalan Madukismo",
               "short_name" : "Jl. Madukismo",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Padokan Kidul",
               "short_name" : "Padokan Kidul",
               "types" : [ "administrative_area_level_5", "political" ]
            },
            {
               "long_name" : "Tirtonirmolo",
               "short_name" : "Tirtonirmolo",
               "types" : [ "administrative_area_level_4", "political" ]
            },
            {
               "long_name" : "Kecamatan Kasihan",
               "short_name" : "Kec. Kasihan",
               "types" : [ "administrative_area_level_3", "political" ]
            },
            {
               "long_name" : "Bantul",
               "short_name" : "Bantul",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Daerah Istimewa Yogyakarta",
               "short_name" : "Jogja",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Indonesia",
               "short_name" : "ID",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "55184",
               "short_name" : "55184",
               "types" : [ "postal_code" ]
            }
         ],
         "place_id" : "ChIJtwRkSdcHTCwRhfStG-dNe-M",
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

例如,我想获取“administrative_area_level_3”的值。但是该键并不总是在该索引中,然后我想按键“administrative_area_level_3”进行过滤

标签: phparraysjsonfilter

解决方案


您可以使用“address_components”列表中的迭代,然后匹配“types”中包含管理区域_级别_3 的值。例如 :

foreach ($json['results'][0]['address_components'] as $value) {
  if(in_array("administrative_area_level_3", $value['types'])){
    $data = $value;
    break;
  }
}

print_r($data);

推荐阅读