2016-01-21 16 views
-2

我得到的PHP变量,数组,当我打印此阵,它看起来像:如何在jQuery中转换一个php数组,如文字符号?

Array 
(
    [0]=>array(
       [lat]=>2.4354343 
       [lng]=>6.43434343 
       [address]=>united states 
      ) 
    [1]=>array(
       [lat]=>5.4354343 
       [lng]=>8.43434343 
       [address]=>delhi 
      ) 
    [2]=>array(
       [lat]=>2.4354343 
       [lng]=>6.43434343 
       [address]=>Mumbai 
      ) 
    [3]=>array(
       [lat]=>2.4354343 
       [lng]=>6.43434343 
       [address]=>rajsthan 
      ) 
) 

现在我想把它转换成像这样的jQuery:

var loc = [ 
    ['united states', 2.4354343, 6.43434343], 
    ['delhi', 5.4354343, 8.43434343], 
    ['Mumbai', 2.4354343, 6.43434343], 
    ['rajsthan', 2.4354343, 6.43434343] 
] 
+0

JQuery/Javascript是客户端语言,而PHP是服务器端语言。 JQuery不知道关于PHP或服务器上的语言,并不在乎。所以......为了回答你的问题,你可能在php中寻找json_encode。 http://php.net/manual/en/function.json-encode.php – Scott

+0

你放弃了还是什么? – AbraCadaver

+0

谢谢大家的帮助... – user1990

回答

0

如果你一定要始终甲肝纬度,经度和地址,字段,你可以这样做:

$array = array(
    array(
     "lat" => 2.4354343, 
     "lng" => 6.43434343, 
     "address" => "united states" 
    ), 
    array(
     "lat" => 5.4354343, 
     "lng" => 8.43434343, 
     "address" => "delhi" 
    ), 
    array(
     "lat" => 2.4354343, 
     "lng" => 6.43434343, 
     "address" => "Mumbai" 
    ), 
    array(
     "lat" => 2.4354343, 
     "lng" => 6.43434343, 
     "address" => "rajsthan" 
    ) 
); 
$loc = array(); 
foreach ($array as $values) { 
    $loc[] = array(
     $values['address'], 
     $values['lat'], 
     $values['lng'] 
    ); 
} 

print_r(json_encode($loc)); 
0

提取从每个数组中的值,然后JSON编码可能?

$result = json_encode(array_map('array_values', $array)); 
0

你为什么要这么做,因为它似乎是工作的,没有明显的好处和可能的一些不好的副作用不必要的量很可疑。例如,在阵列的每个元素中使用您可以访问address而不是latlng的密钥将缓解重新排序要求并且完全避免查找的成本。

在任何方面,编码到这一点你问你需要通过array_values可能喜欢的东西array_map('array_values',$arr)完成运行阵列中的每个元素的那种JSON的......

然而,这并不能解决您在每个子阵列中首先会遇到address部件的订购问题。为了解决这个问题,你可以替换的array_values结合地图和坡平掉数组的最后一个元素,并返回被联合数组是这样的...

$arr = array_map(function($v) { 
    return array_values([array_pop($v)] + $v); 
}, $arr); 

最后的json_encode输出应该给你你所期望的。 ..

echo json_encode($arr); 
+0

这会丢失所有阵列中的'lat'元素。 – AbraCadaver

+0

不知道你为什么这么想。它按预期工作。 – Sherif

+0

@AbraCadaver http://ideone.com/QEdYfW似乎对我来说工作得很好。 – Sherif

相关问题