json编码的php数组,将引号括在坐标变量输出周围

时间:2018-10-08 16:52:25

标签: php json

我正在编写一个wordpress循环,该循环获取多个帖子,并在基于php的数组中输出帖子自定义字段GeoJson坐标数组。

请参见下面的$sFeatureCoordinates变量的内容。

  [
    [
      -0.7332730293273926,
      51.89886634382943
    ],
    [
      -0.7326534390449524,
      51.89770778622719
    ],
    [
      -0.7318434119224548,
      51.898079355455344
    ],
    [
      -0.7332730293273926,
      51.89886634382943
    ]
  ]

然后在我的php数组下面查看,然后使用json_encode格式化该数组。

$arr = [
    'type' => 'FeatureCollection',
    'features' => []
];

// loop through each post
while($oQuery->have_posts()): $oQuery->the_post();

    // grab our type and coordinates
    $sFeatureType = get_field('geojson_feature_type');
    $sFeatureCoordinates = get_field('geojson_feature_coordinates');

    // add this to our features
    $arr['features'][] = [
        'type' => 'Feature',
        'properties' => [
            'id' => get_the_id(),
            'name' => get_the_title()
        ],
        'geometry' => [
            'type' => $sFeatureType,
            'coordinates' => [
                [ preg_replace('/\s+/', '', $sFeatureCoordinates) ]
            ]
        ]
    ];

endwhile;

$json = json_encode($arr);

以下是http://myjson.com/pssis

上方数组输出的json示例

我遇到的问题是coordinates在被编码时被用引号引起来。

当我的Google Maps脚本尝试读取js时,会导致js错误。

关于如何阻止coordinates上的内容用引号引起来的任何想法?

非常感谢

1 个答案:

答案 0 :(得分:2)

$sFeatureCoordinates是JSON,因此只需对其解码并添加到数组中即可。然后,当您json_encode时,一切都会解决。根据需要添加或删除[ ]以获得正确的嵌套级别:

'coordinates' => [ [ json_decode($sFeatureCoordinates, true) ] ]