php - 检查嵌套数字数组中包含的数字是否包含 PHP 中的范围
问题描述
我有这样的嵌套数字数组:[ [ 0, 100 ], [ 300, 500 ] ]
我需要在该数组的任何范围内检查给定的数字。
数组格式为:[ start, end ]
例如,如果给定的数字是30
,则包含在 中$array[0]
,但200
不包含在任何范围内。30
是这样true
,但是200
是false
。
是的,我可以使用 for-loop 进行检查。但我认为可能有更好的方法来检查这一点。但是我在算法方面很弱,所以我尝试在 Google 和 StackOverflow 找到解决方案,但没有找到。
也许已经有这个问题的可用答案,但我找不到关于这个问题的解决方案。如果已经有答案,请对重复的问题感到抱歉。
解决方案
您可以使用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;
推荐阅读
- firebase - Firebase 问题 - 想成为组织管理员
- vue.js - 如何在 Vue.js 模板文字中使用 php 变量?
- fonts - 根据android中的宽度从给定字体决定文本视图的字体大小
- python - Maskrcnn 如何获取 pipeline.config 文件?
- controller - ASP.NET核心获取路由数据值到输入框
- javascript - 扩展 jQuery 的类不是自身的实例
- javascript - Three.js - 如何围绕原点或选择的枢轴点环绕物体?
- python - 如何从python中的十六进制字符串中获取最后两个字节
- python - 如何从其他模块或类中获取变量?
- javascript - Apollo 客户端 useLazyQuery 在重新获取时返回未定义