たとえば、配列があります(何でもかまいませんが、すでに注文されています):
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'];
前もって感謝します。