タイトルは長くて紛らわしいです、許してください。
$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];
そのようなものが機能するはずです。