PHP有某种比较数字的功能吗?我知道他们有文字比较,如similar_text()
但是我想比较一下lat / lng值,它们非常相似,但差别很小
示例:
place 1
lat: 34.095161
lng: -117.720638
compare with
lat: 34.0948841
lng: -117.7206854
place 2
lat: 34.094572563643
lng: -117.72184828904
compare with
lat: 34.094112
lng: -117.7250746
他们可能彼此非常接近,我希望能够获得一定的范围?我可以使用一些PHP函数吗?
由于
答案 0 :(得分:2)
我认为没有内置功能。也许你可以使用欧几里德距离来计算它们的相似性是一种易于实现的方式。
$diff = sqrt((($lat1 - $lat2) * ($lat1 - $lat2)) + (($lng1 - $lng2) * ($lng1 - $lng2)));
$epsilon = 0.0001;
if ($diff < $espilon) {
echo 'we consider them equal';
} else {
echo 'they are different';
}
注意:$ diff在这里是对差异的纯粹量化,你不能将lat / lng值视为形成2D点,其距离可以通过欧几里德方法严格计算(参见here why)
答案 1 :(得分:2)
另请查看Haversine formula。通常用于查看球体上2个点之间的距离有多大。