Esta é uma função muito interessante que retorna a distancia em metros, de dois pontos (com latitude e longitude).
Se você não tem e não sabe como conseguir a latitude e longitude de um endereço, uma maneira é utilizando a API do Google Maps, eu criei um post especial para este assunto:
Segue a função para o cálculo de distância:
function distanciaPontosGPS($p1LA, $p1LO, $p2LA, $p2LO) {
$r = 6371.0;
$p1LA = $p1LA * pi() / 180.0;
$p1LO = $p1LO * pi() / 180.0;
$p2LA = $p2LA * pi() / 180.0;
$p2LO = $p2LO * pi() / 180.0;
$dLat = $p2LA – $p1LA;
$dLong = $p2LO – $p1LO;
$a = sin($dLat / 2) * sin($dLat / 2) + cos($p1LA) * cos($p2LA) * sin($dLong / 2) * sin($dLong / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 – $a));
return round($r * $c * 1000); // resultado em metros.
}
Para usar:
echo distanciaPontosGPS(-26.91545, -49.063632, -26.917985, -49.061143);
Como fazer uma Análise Combinatória com PHP
setembro 30, 2009
Essas duas funções (fatorial e combinacoes) juntas, podem ser úteis para calcular combinações por meio da famosa permutação.
Este script pode até ser usado para calcular a quantidade de combinações possíveis para acertar na megasena com toda a absoluta certeza
.
<?php
/**
* Fatorial de um número.
*
* @param integer $number Query para pegar o número de linhas
*
* @return double
*
* @since 04/03/09
* @author Lucas Martins
* @copyright Copyright (c) 2009, Lucas Martins
*
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
function fatorial($number) {
if ($number >= 2) {
for ($number, $resultado = $number; $number >= 2; $number–) {
$resultado = (($number-1) * $resultado);
}
return $resultado;
} else {
return 1;
}
}
/**
* Análise Combinatória.
*
* @param integer $n Número de elementos
* @param integer $k Taxa de agrupamento
*
* @return double
*
* @since 04/03/09
* @author Lucas Martins
* @copyright Copyright (c) 2009, Lucas Martins
*
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
function combinacoes($n, $k) {
if ($n > $k) {
$combinacao = fatorial($n) / (fatorial($k) * fatorial($n – $k));
return $combinacao;
} else {
return “ERRO: O número de elementos deve ser maior do que o de grupo”;
}
}
// —————————-
// Exemplo de utilização
// —————————-
// fatorial(integer)
$permutacao = fatorial(4);
echo “O fatorial de 4 é: “.$permutacao.”<br />”;
// combinacoes(integer, integer)
$combinacoes = number_format(combinacoes(25, 15), 0, ‘,’, ‘.’);
echo “Pra eu ganhar na loteria megasena com certeza, eu tenho que fazer “.$combinacoes.” combinações possíveis
<br />”;
?>
Abraços,
Lucas Martins.


