我有一个MySQL表具有以下属性1套: STORE_NAME 纬度 LON找到2个坐标之间最短的距离与存储在表中
我有1500年记录。
我需要找到离用户最近的商店(基于IP)。
我已经使用第三方API计算出IP翻译部分。我知道如何计算2个坐标之间的距离。但是,我不知道如何返回最接近的商店名称。
我的函数来计算距离
function distance($lat1, $lon1, $lat2, $lon2)
{
$minus = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1))*cos(deg2rad($lat2)) * cos(deg2rad($minus));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
return $miles;
}
我能找到用户分别与各店铺之间的距离。
注意:$ lat1和$ lat1由第三方API服务获取。
$store = mysql_query("SELECT * FROM store") or die(mysql_error());
while($row=mysql_fetch_assoc($store))
{
$lat2 = $row["lat"];
$lon2 = $row["lon"];
$distance = distance($lat1, $lon1, $lat2,$lon2);
}
如何计算运行距离函数并将距离值存储在数组中,然后对距离进行排序以找到最近的存储区?这是正确的方法吗?我该如何处理数组代码?我对PHP中的数组没有经验。
谢谢。
请[停止使用'mysql_ *'功能](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [这些扩展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中删除。了解[编写](http://en.wikipedia.org/ wiki/Prepared_statement)语句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)并考虑使用PDO,[这真的很简单](http://jayblanchard.net/demystifying_php_pdo.html)。 –
mysql_query放在一边(我会解决这个问题,谢谢),我该如何处理排序? –
分享你尝试过阵列和排序的地方。或者你想让别人为你写吗? –