我有一個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放在一邊(我會解決這個問題,謝謝),我該如何處理排序? –
分享你嘗試過陣列和排序的地方。或者你想讓別人爲你寫嗎? –