Bueno yo tenia otra respuesta pero me ganaron de todas formas:
Supongamos que tienes un array con los numeros y estan ordenados de menor a mayor usas esto:
Código PHP:
function masCercano($numero, $arrayDeNumeros) {
for($i=0;$i<count($arrayDeNumeros);$i++) {
if($numero < $arrayDeNumeros[0]) {
return($arrayDeNumeros[0]);
} elseif($arrayDeNumeros[$i] <= $numero && $arrayDeNumeros[$i+1] >=$numero) {
$mitad = ($arrayDeNumeros[$i]+$arrayDeNumeros[$i+1])/2;
if($numero > $mitad) {
return($arrayDeNumeros[$i+1]);
} else {
return($arrayDeNumeros[$i]);
}
} elseif($numero > $arrayDeNumeros[count($arrayDeNumeros)-1]) {
return($arrayDeNumeros[count($arrayDeNumeros)-1]);
}
}
}
$arrayNum = array(100,200,300,459,1025,30254);//numeros que tendra el array
$variable = 256;//numero que se va a comparar
echo "Número más cercano a $variable :".masCercano($variable, $arrayNum);