【问题标题】:Get numbers from array(Lat Long ) in PHP从 PHP 中的数组(经纬度)中获取数字
【发布时间】:2016-05-15 03:07:46
【问题描述】:

我从 android 收到一个带有 Lat/Long 字符串的数组,如下所示:

$array = array(
"parametros1" =>"lat/lng: (-33.36808,-70.74779)",
"parametros2" =>"lat/lng: (-33.36826,-70.74685)",
"parametros3" =>"lat/lng: (-33.36867,-70.745)",
"parametros4" =>"lat/lng: (-33.36875,-70.74462)",
"parametros5" =>"lat/lng: (-33.36879,-70.74436)",
"parametros6" =>"lat/lng: (-33.36882,-70.74415)",
"parametros7" =>"lat/lng: (-33.36888,-70.74387)",
"parametros8" =>"lat/lng: (-33.36905,-70.74364)",
"parametros9" =>"lat/lng: (-33.3691,-70.74347)",
"parametros10"=>"lat/lng: (-33.36948,-70.7417)" 
);

我想将 Lat/lng 的值存储在 2 个数组中,如何分别获取这些值?

Ps:对不起,我的英语不好,谢谢。-

【问题讨论】:

  • 什么意思? Lat 在 1 个数组中,lng 在另一个数组中?
  • 是的,2 个数组(1 个 lat ,1 个 lng)或 1 个数组和 2 个子数组(1 个 lat ,1 个 lng)。

标签: php arrays string numbers


【解决方案1】:

这会有点复杂,那是因为需要一些数据处理。

$lat = array(); 
$lon = array(); 

foreach($array as $k => $v){
 $v = str_replace('lat/lng: (','',$v);
 $v = str_replace(')','',$v);
 $v = explode(',', $v);
 $lat[] = $v[0];
 $lon[] = $v[1];
}

print_r($lat);
print_r($lon);

【讨论】:

  • 我喜欢数据处理:P 享受!
【解决方案2】:

使用listexplode 的结果映射到preg_replace -> $latLng 到2 个数组。

foreach($array as $key => $latLng){
    list($arrayLat[],$arrayLng[]) = explode(",", preg_replace('/[^-\d.,]/', '', $latLng));
}

Ideone Demo 2

【讨论】:

  • preg_match 很慢。这是真的。 (有时需要)
  • 这可能不会被很好地接受,但是对正则表达式做一些速度检查,它是你必须使用的那些强大的东西之一。
  • 接受的答案:OK (0.012 sec real, 0.015 sec wall, 14 MB, 227 syscalls) eval.in/571668 我的第一个解决方案:OK (0.008 sec real, 0.010 sec wall, 14 MB, 227 syscalls)eval.in/571670 我的第二个解决方案:OK (0.008 sec real, 0.011 sec wall, 14 MB, 228 syscalls) eval.in/571669
  • 好吧,我想我是正确的。先生,您的速度更快,您是正则表达式大师。
  • 您可能想在str_replace 中使用一个数组,而不是调用它两次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多