例如,我有一个数组(它可以是任何东西,但它已经订购了):
array(1,7, 12, 18, 25);
我需要找到最接近该数组的数字。
取上面的数组:
$needle = 11;
我要检索的数组中的数字是7
. 最接近的数字11
应该是12
,但我不想要最接近的数字,我想要最接近的次要数字,如果这有任何意义的话。
另一个例子:
- 输入
26
检索到的号码应该是25
- 输入
1
检索到的号码应该是1
- 输入
6
检索到的号码应该是1
- 输入
7
检索到的号码应该是7
- 输入
16
检索到的号码应该是12
我找到了一个不错的函数,但它只检索最接近的数字,而不是次要的最接近的数字:
function closestnumber($number, $candidates) {
for($i = 0; $i != sizeof($candidates); $i++) {
$results[$i][0] = abs($candidates[$i] - $number);
$results[$i][1] = $i;
}
sort($results);
$end_result['closest'] = $candidates[$results[0][1]];
$end_result['difference'] = $results[0][0];
return $end_result;
}
$closest = closestnumber(8,array(1,7, 12, 18, 25));
echo "Closest: ".$closest['closest']."<br>";
echo "Difference: ".$closest['difference'];
提前致谢。