0

标题冗长而混乱,见谅。

$array = (1,5,10,25,50);
$x = 8

我如何将 $x 与数组中的每个值进行比较,然后选择最匹配的值。

在这种情况下,它将是 10。

我想象着创建一些 if 语句,但认为可能有更好的方法来做到这一点。

提前致谢

4

2 回答 2

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);
于 2013-02-17T03:00:05.573 回答
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];

像这样的东西应该工作。

于 2013-02-17T02:42:53.670 回答