标题冗长且令人困惑,请原谅我。将单个值与数组进行比较 - 用数组中的最接近的数字替代值
$array = (1,5,10,25,50);
$x = 8
如何将$ x与数组中的每个值进行比较,然后选择最匹配的值。
在这种情况下,这将是10
我想象创造的if语句了一把,但认为有可能是一个更好的方式来做到这一点。
在此先感谢
标题冗长且令人困惑,请原谅我。将单个值与数组进行比较 - 用数组中的最接近的数字替代值
$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];
类似的东西应该工作。
感谢您的回复! – spm 2013-02-17 03:39:48
谢谢你的回复! – spm 2013-02-17 03:42:26