Найти значение между значениями массива - PullRequest
3 голосов
/ 26 сентября 2011

У меня большой массив и я хочу найти, между какими значениями массива будет отображаться искомое значение.

Упрощенная версия этого массива выглядит следующим образом:

[0] => Array
    (
        [min] => 0
        [max] => 4.999
        [val] => low
    )

[1] => Array
    (
        [min] => 5
        [max] => 9.999
        [val] => med
    )

[2] => Array
    (
        [min] => 10
        [max] => 14.999
        [val] => high
    )

Так что, если бы я искал 6.2, возвращаемый результат был бы значением массива 'med'

Есть ли встроенная функция, которая может легко проходить по массиву для выполнения этого вычисления, или мне нужно было бы установить цикл foreach

Заранее спасибо

1 Ответ

6 голосов
/ 26 сентября 2011

Я думаю, что простой foreach будет достаточно быстрым, с некоторыми мерами предосторожности при сравнении с плавающей запятой: смотрите здесь: http://codepad.org/sZkDJJQb

   <?php

$rangeArray = array(
    array( 'min' => 0, 'max' => 4.999,  'val' => 'low'),
    array( 'min' => 5, 'max' => 9.999,  'val' => 'med'),
    array( 'min' => 10, 'max' => 14.999,  'val' => 'high'),
    );

$input = 6.2;
$precision = 0.00001 ;

foreach($rangeArray as $current)
{
  if( ($input - $current['min']) > $precision and ($input - $current['max']) <= $precision )
    {
      echo $current['val'];
      break;
    }
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...