You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何将经纬度数组格式化为$point1/$point2以调用distanceCalculation函数

如何将现有数组转换为经纬度计算所需的$point1/$point2格式?

首先得说,你遇到的核心问题其实不是数组格式不匹配,而是误用了array_push()的返回值!先理清楚问题所在:

我的查询返回的数组格式为:

Array ( 
  [0] => Array ( [lat] => 32.9697 [long] => -96.80322 ) 
  [1] => Array ( [lat] => 29.46786 [long] => -98.53506 ) 
)

而示例中的格式是单个关联数组:

$point1 = array("lat" => "48.8666667", "long" => "2.3333333");
$point2 = array("lat" => "19.4341667", "long" => "-99.1386111");

其实你生成的$to和$from已经完全符合$point1/$point2的格式了!问题出在这两行代码:

$array1=array_push($finalDest,$to);
$array2=array_push($finalDest,$from);

array_push()函数返回的是新数组的长度,不是你刚添加进去的元素!所以$array1和$array2其实是数字(比如第一次push后返回1,第二次返回2),根本不是经纬度数组,这才导致你调用distanceCalculation()时出错。

修正方案

你完全不需要绕弯子,直接用已经生成好的$to和$from作为计算参数就行,和示例的格式完全一致。如果需要把这些点存到$finalDest里,单独执行push操作即可:

// 先初始化$finalDest数组
$finalDest = [];

foreach ($usersInfo as $users) { 
    $ridefrom = $users['ride_from']; 
    $rideto = $users['ride_to'];
    
    // 拆分经纬度并生成符合要求的关联数组
    $tempLatLong = explode(',', $users['ride_from']); 
    $tempLatLong1 = explode(',', $users['ride_to']); 
    $key = array('lat','long'); 
    
    // $to和$from就是你要的$point1/$point2格式!
    $to = array_combine($key, $tempLatLong); 
    $from = array_combine($key, $tempLatLong1); 
    
    // 如果你需要把这两个点存到$finalDest里,单独执行push,不要赋值给变量
    array_push($finalDest, $to);
    array_push($finalDest, $from);
    
    // 直接用$to和$from调用计算函数
    $km = distanceCalculation($to['lat'], $to['long'], $from['lat'], $from['long']);
    echo $km;
    
    // 现在$finalDest里的元素就是你展示的格式,之后要取的话也可以这样用:
    // $point1 = $finalDest[0];
    // $point2 = $finalDest[1];
    // $km = distanceCalculation($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);
}

补充说明

你现在生成的$finalDest数组,里面的每个元素都是完全符合示例中$point1/$point2的格式的。比如$finalDest[0]就是第一个点的关联数组,$finalDest[1]是第二个点的,直接拿出来用就行,不需要额外转换。

内容的提问来源于stack exchange,提问作者new developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:45:21