如何将逗号分隔的经纬度字符串转换为PHP关联数组?
问题
我正在处理多维数组中的单个数组值,当输出$users['ride_from']时,得到结果为32.9697, -96.80322。请问能否将其转换为类似$point1那样包含lat和long元素的关联数组?相关代码如下:
foreach ($usersInfo as $key=> $users){ $ridefrom = $users['ride_from']; $rideto = $users['ride_to'];//this is from lat long $point1 = array("lat" => "48.8666667", "long" => "2.3333333"); // Paris (France) }
解决方案
当然可以啦!你只需要把逗号分隔的坐标字符串拆分成两个部分,再分别赋值给关联数组的lat和long键就行。这里给你几种实用的方法:
方法一:直接用explode()拆分
这是最直观的方式,以逗号加空格作为分隔符把字符串拆成数组,再提取对应的值:
foreach ($usersInfo as $key=> $users){ $ridefrom = $users['ride_from']; // 拆分坐标字符串 $coords = explode(', ', $ridefrom); // 转换成目标关联数组 $rideFromPoint = array( "lat" => $coords[0], "long" => $coords[1] ); // 同理处理ride_to $rideto = $users['ride_to']; $coordsTo = explode(', ', $rideto); $rideToPoint = array( "lat" => $coordsTo[0], "long" => $coordsTo[1] ); $point1 = array("lat" => "48.8666667", "long" => "2.3333333"); // Paris (France) }
小提示:如果你的坐标字符串里逗号后面没有空格,记得把explode(', ', ...)改成explode(',', ...),避免拆分出带空格的坐标值哦。
方法二:用list()简化赋值
结合list()可以直接把拆分后的值赋值给变量,代码看起来更简洁:
foreach ($usersInfo as $key=> $users){ // 处理ride_from list($latFrom, $longFrom) = explode(', ', $users['ride_from']); $rideFromPoint = array( "lat" => $latFrom, "long" => $longFrom ); // 处理ride_to list($latTo, $longTo) = explode(', ', $users['ride_to']); $rideToPoint = array( "lat" => $latTo, "long" => $longTo ); $point1 = array("lat" => "48.8666667", "long" => "2.3333333"); // Paris (France) }
额外优化:兼容不规范的坐标格式
如果担心坐标字符串格式不统一(比如有时有空格有时没有,或者有多余空格),可以先清理字符串再拆分:
// 先去掉首尾空格,再按逗号或任意空白字符拆分 $coords = preg_split('/[,\\s]+/', trim($users['ride_from']));
这样不管是"32.9697,-96.80322"还是"32.9697 , -96.80322"都能正确拆分出干净的坐标值。
内容的提问来源于stack exchange,提问作者new developer
相关产品推荐
相关产品推荐

