PHP实现类似JSON.stringify功能:坐标数组$coords转字符串咨询
解决PHP中转换坐标数组为标准JSON格式的问题
嘿,我来帮你搞定这个问题!你现在的核心问题是:你的$coords数组里每个元素都是包含经纬度的单个字符串(比如"80.2333...,26.527..."),而不是结构化的数值对,所以直接用implode或者直接json_encode原始数组,都没法得到符合预期的标准JSON格式。
要实现类似JS里JSON.stringify的效果,你只需要两步:先把每个坐标字符串拆分成结构化的子数组,再用PHP内置的json_encode()函数处理,这就是最靠谱的方式。
完整代码示例
// 你的原始坐标数组 $coords = [ '80.23338342111089 ,26.52748985468579', '80.21915925983853 ,26.51065783417543', '80.23036859334592 ,26.49785585262899', '80.24667293123426 ,26.51075259323626', '80.23338342111089 ,26.52748985468579' ]; // 1. 将每个坐标字符串拆分为经纬度数值对,转成二维数组 $structuredCoords = array_map(function($coordStr) { // 先去掉坐标里的空格,再按逗号分割 $parts = array_map('trim', explode(',', $coordStr)); // 可选:把字符串转成浮点数,让JSON里是数值类型(更符合地理坐标的标准) return array_map('floatval', $parts); }, $coords); // 2. 用json_encode生成标准JSON字符串(对应JS的JSON.stringify) $jsonOutput = json_encode($structuredCoords); // 输出结果 echo $jsonOutput;
输出结果
运行后你会得到标准的JSON格式数组:
[[80.23338342111089,26.52748985468579],[80.21915925983853,26.51065783417543],[80.23036859334592,26.49785585262899],[80.24667293123426,26.51075259323626],[80.23338342111089,26.52748985468579]]
额外说明
- 如果你不需要把坐标转成浮点数,去掉
array_map('floatval', $parts)即可,此时JSON里的坐标会是字符串类型,但数值类型通常更适合地理数据场景。 json_encode()是PHP中最接近JSJSON.stringify的函数,它会自动处理数组的层级结构,生成符合JSON规范的字符串,完全不需要手动拼接。
内容的提问来源于stack exchange,提问作者butch
相关产品推荐
相关产品推荐

