如何在长php字符串中交换纬度和经度以用于传单多段线?

如何在长php字符串中交换纬度和经度以用于传单多段线?,php,leaflet,Php,Leaflet,我得到一个json响应,其中包含以下格式的纬度和经度字符串: [39.608379, -106.450714],[39.608311,-106.450348],[39.608292,-106.450005],[39.608288,-106.449722] 我的问题是传单的经纬度需要颠倒。我无法控制json数据,只能在php或javascript传单中操作数据 有人有交换价值的好方法吗?请注意,字符串通常比这长得多,而且变化很大。一个简单的foreach可以非常简单地完成这项工作 $js =

我得到一个json响应,其中包含以下格式的纬度和经度字符串:

 [39.608379, -106.450714],[39.608311,-106.450348],[39.608292,-106.450005],[39.608288,-106.449722] 
我的问题是传单的经纬度需要颠倒。我无法控制json数据,只能在php或javascript传单中操作数据


有人有交换价值的好方法吗?请注意,字符串通常比这长得多,而且变化很大。

一个简单的foreach可以非常简单地完成这项工作

$js = '[[39.608379, -106.450714],[39.608311,-106.450348],[39.608292,-106.450005],[39.608288,-106.449722]]';
$ja = json_decode($js);

$new_arr = [];
foreach ($ja as $j){
    $new_arr[] = [$j[1], $j[0]];
}
print_r($new_arr);
结果

Array
(
    [0] => Array
        (
            [0] => -106.450714
            [1] => 39.608379
        )

    [1] => Array
        (
            [0] => -106.450348
            [1] => 39.608311
        )

    [2] => Array
        (
            [0] => -106.450005
            [1] => 39.608292
        )

    [3] => Array
        (
            [0] => -106.449722
            [1] => 39.608288
        )

)
在php中

您可以
json\u对其进行编码

使用js(多种方法之一):

var json=[[39.608379,-106.450714],[39.608311,-106.450348],
[39.608292,-106.450005], [39.608288,-106.449722]];
var反向=[];
for(var i=0;i
json_decode和循环的组合?javascript代码看起来像什么?在那里交换值可能很容易,javascript代码被最小化了。我很好地处理了名为t.polyline的函数,其中包含两个变量,并尝试交换它们,但它破坏了脚本。为了我的使用,我不得不稍微修改它,但它确实做到了!谢谢毫不奇怪,您没有告诉我们太多关于您的实际代码:)好吧,现在我用实时数据实现了它,它不起作用了。当我解析我的json内容时,我会执行一个json_decode()并将我的多段线字符串保存在一个变量中。它有点凌乱,所以我用几行php将其清理干净,以将其保存到上面的字符串中。我回应说一切都很好。我现在的问题是,如果我再次解码,它是一个空变量。明白了!使用您的一般想法,但将我的字符串更改为使用explode而不是json_decode。我不知道为什么我在这件事上放了个屁。我想太多的深夜了。谢谢你的帮助@RiggsFolly
$json = '[[39.608379, -106.450714],[39.608311,-106.450348], [9.608292,-106.450005], [39.608288,-106.449722]]';

$json = json_decode($json, true);

$reversed = [];

foreach ($json as $el){
    $reversed[] = [$el[1], $el[0]];
}
var json = [[39.608379, -106.450714],[39.608311,-106.450348], 
[39.608292,-106.450005], [39.608288,-106.449722]];

var reversed = [];

for (var i = 0; i < json.length; i++){
    reversed.push([json[i][1], json[i][0]]);
}