Рубрики
PHP

Расчет расстояния между двумя географицескими координатами

/*
     * @param $lat1 float $value <p>Широта 1-й точки</p>
     * @param $lng1 float $value <p>Долгота 1-й точки</p>
     * @param $lat2 float $value <p>Широта 2-й точки</p>
     * @param $lng2 float $value <p>Долгота 2-й точки</p>
     * @return float value растояние в метрах
     */
    function calculateDistance($lat1, $lng1, $lat2, $lng2)
    {
        $earthRadius = 6378137;

        $lat1 = deg2rad($lat1);
        $lng1 = deg2rad($lng1);
        $lat2 = deg2rad($lat2);
        $lng2 = deg2rad($lng2);

        return round($earthRadius * acos(cos($lat1) * cos($lat2) * cos($lng1 - $lng2) + sin($lat1) * sin($lat2)));
    }
Рубрики
PHP

Перевод UTF-8 в ISO-8859-15

function Utf8ToIsoDataStruct(&$data, $checkStringsIfText=true) {


		if (is_object($data) || is_array($data)) {

			foreach($data as $key => $property) {
				if (is_string($property)) {
					
					$propertyDecoded =  mb_convert_encoding($property, "ISO-8859-15", "UTF-8");
					
					if ($checkStringsIfText) {
						if (self::isText($propertyDecoded)) {
							$propertyResult = $propertyDecoded;
						} else {
							$propertyResult = $property;
						}
					} else {
						$propertyResult = $propertyDecoded;
					}				
					
					if (is_object($data)) {						
						$data->{$key} = $propertyResult;						
					} elseif (is_array($data)) {						
						$data[$key] = $propertyResult;						
					}

				} elseif (is_array($property) || is_object($property)) {
					if (is_object($data)) {
						self::Utf8ToIsoDataStruct($data->{$key}, $checkStringsIfText);
					} elseif (is_array($data)) {
						self::Utf8ToIsoDataStruct($data[$key], $checkStringsIfText);
					}
				}

			}

		}
	}