查找数组值之间的值

发布于 2024-12-06 18:13:14 字数 488 浏览 1 评论 0原文

我有一个大数组,想找到搜索值将出现在哪些数组值之间。

该数组的简化版本如下:

[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 循环

提前致谢

I have a large array and would like to find between which array values the search value would appear.

A simplified version of this array is as follows:

[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
    )

So if I was to search for 6.2 the returned result would be the array value 'med'

Is there a built in function that can easily walk over the array to make this calculation or would I need to set up a foreach loop

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你丑哭了我 2024-12-13 18:13:14

我认为一个简单的 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;
    }
}

?>

I think a simple foreach would be fast enough, with some precaution in
floating point comparisons : see it here : 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;
    }
}

?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文