【发布时间】:2017-02-12 13:48:02
【问题描述】:
我有一个数组中来自数据库的用户的 lat 和 lng 我有我的纬度和经度
现在我想计算距离并用它对数据库中的用户进行排序
$mylat = $_SESSION['lat'];
$mylng = $_SESSION['lng'];
$statement = $pdo->prepare("SELECT * FROM users");
$statement->execute();
$users = $statement->fetchAll();
foreach($users as $row){
$dist = 0.0;
$x1 = $mylng;
$x2 = $row['lng'];
$y1 = $mylat;
$y2 = $row['lat'];
$dist = acos(sin($x1=deg2rad($x1))*sin($x2=deg2rad($x2))+cos($x1)*cos($x2)*cos(deg2rad($y2) - deg2rad($y1)))*(6378.137);
$distn = FLOOR ( ROUND($dist,1) * 2 ) / 2 ;
}
sort($distn);
foreach ($users as $row) {
$dist = 0.0;
$x1 = $mylng;
$x2 = $row['lng'];
$y1 = $mylat;
$y2 = $row['lat'];
$dist = acos(sin($x1=deg2rad($x1))*sin($x2=deg2rad($x2))+cos($x1)*cos($x2)*cos(deg2rad($y2) - deg2rad($y1)))*(6378.137);
$distn = FLOOR ( ROUND($dist,1) * 2 ) / 2 ;
echo $row['username'];
echo $distn;
}
所以在第一个 foreach 中,我计算了每个用户到我的距离。 比我想在与我的距离之后对用户进行排序并显示它们 有名字,离我有距离。
user1 0.5km distance
user2 1km distance
但我不会工作。 谢谢你的帮助:)
【问题讨论】:
-
sort($distn), $dstn 看起来不像一个数组 -
Sadasivan Pillai ,$distn 是一个值,它是为数组中的每个值计算的值,其中包含数组中的值。 array: user1 =>lat=>lng, user2=>lat=>lang, etc... 我想计算一个用户和我之间的距离并像这样排序
标签: php arrays sorting floating-point