标题冗长而混乱,见谅。
$array = (1,5,10,25,50);
$x = 8
我如何将 $x 与数组中的每个值进行比较,然后选择最匹配的值。
在这种情况下,它将是 10。
我想象着创建一些 if 语句,但认为可能有更好的方法来做到这一点。
提前致谢
另一种方式,使用具有差异的中间数组:
$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);
$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];
像这样的东西应该工作。