我在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 :(得分:0)
如果您确定始终拥有lat,lng和adress字段,则可以执行以下操作:
$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));
答案 1 :(得分:0)
从每个数组中提取值,然后可能是JSON编码?
$result = json_encode(array_map('array_values', $array));
答案 2 :(得分:0)
为什么你想要这样做是可疑的,因为它似乎是一项不必要的工作量,没有明显的好处,可能还有一些不好的副作用。例如,拥有一个密钥,您可以通过该密钥访问数组的每个元素中的address
与lat
和lng
,这将减轻重新排序要求,并避免{{{}的成本1}}完全查找。
在任何方面,要将此编码为JSON,你要求你需要通过O(n)
运行数组中的每个元素,这可以用array_values
之类的东西来完成。
但是,这并不能解决在每个子数组中首先期望array_map('array_values',$arr)
部分的排序问题。要处理这个问题,你可以用address
的组合替换地图,然后弹出数组中的最后一个元素,然后像这样返回联合数组......
array_values
最后$arr = array_map(function($v) {
return array_values([array_pop($v)] + $v);
}, $arr);
的输出应该能满足你的期望......
json_encode