标题冗长而令人困惑,原谅我。
$array = (1,5,10,25,50);
$x = 8
如何将$ x与数组中的每个值进行比较,然后选择最接近匹配的值。
在这种情况下,它将是10。
我想象创建一些if语句,但认为可以有更好的方法来做到这一点。
提前致谢
答案 0 :(得分:1)
另一种方法,使用具有差异的中间数组:
$diff = array();
foreach($array as $n)
$diff[$n] = abs($x - $n); // key = number, value = difference
// get the key that contains the smallest difference
$closest = array_search(min($diff), $diff);
答案 1 :(得分:0)
$min = 0;
foreach ($array AS $i => $v) {
if (abs($array[$min] - $x) > abs($v - $x))
$min = $i;
// you can optimize this with :
if ($v == $x)
break;
}
$closest = $array[$min];
这样的事情应该有用。