PHP сравнивая два числа вместе - PullRequest
1 голос
/ 20 марта 2012

Есть ли в PHP какая-то функция, которая будет сравнивать числа? Я знаю, что у них есть сравнение текста вроде similar_text() Но, скажем, я хочу сравнить значения широты / долготы, и они очень похожи, но очень незначительны

пример:

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, которую я могу использовать?

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Также взгляните на Формула Haversine . Обычно используется, чтобы увидеть, насколько велико расстояние между двумя точками на сфере.

2 голосов
/ 20 марта 2012

Я не думаю, что есть встроенная функция.Возможно, вы могли бы использовать евклидово расстояние, чтобы вычислить их сходство, это простой в реализации способ.

$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 здесь - это просто количественная оценка разницы, вы не можете рассматривать значения широты / долготы как формирующие2D точки, расстояние между которыми можно вычислить с помощью евклидова подхода stricto sensu (см. , почему )

...