首页 > 解决方案 > 检查嵌套数字数组中包含的数字是否包含 PHP 中的范围

问题描述

我有这样的嵌套数字数组:[ [ 0, 100 ], [ 300, 500 ] ]

我需要在该数组的任何范围内检查给定的数字。

数组格式为:[ start, end ]

例如,如果给定的数字是30,则包含在 中$array[0],但200不包含在任何范围内。30是这样true,但是200false

是的,我可以使用 for-loop 进行检查。但我认为可能有更好的方法来检查这一点。但是我在算法方面很弱,所以我尝试在 Google 和 StackOverflow 找到解决方案,但没有找到。

也许已经有这个问题的可用答案,但我找不到关于这个问题的解决方案。如果已经有答案,请对重复的问题感到抱歉。

标签: phpalgorithm

解决方案


您可以使用array_filter过滤有效范围。

这应该可以解决问题...

<?php

$arr = [ [ 0, 100 ], [ 300, 500 ] ];

function in_range($value, $arr) {
  $valid_ranges = array_filter($arr, function($range) use ($value) {
    return $value >= $range[0] && $value <= $range[1];
  });

  return count($valid_ranges) > 0;
}

echo in_range(30,$arr) ? 'yes' : 'no';
echo PHP_EOL;
echo in_range(200,$arr) ? 'yes' : 'no';
echo PHP_EOL;

推荐阅读