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 に答える