检查特定范围内的php数组元素


Check php array elements in specific range

我可以检查某个整数值(来自用户输入,因此应该进行过滤)是否在特定范围内,如下所示:

<?php
  $size=50;
  var_dump(in_array($size,range(1,100)));
?>

如果尺寸在1到100。当然,另一种方法是使用过滤器:

<?php
  $size=50;
  $int_options = array("options"=>
                        array("min_range"=>0, "max_range"=>256));
  var_dump(filter_var($size, FILTER_VALIDATE_INT, $int_options));
?>

但是,如果我需要知道数组的元素是否在这个范围内,该怎么办?(可能不删除)考虑到性能和内存使用情况,最佳做法是什么。我更喜欢使用php函数,而不是编写我的函数。

稍微有点功能性的方法(我不知道PHP是否支持lambdas):

function mapper($n) { return $n >= 1 && $n <= 100 ? 1 : 0; }
...
if (array_product(array_map('mapper', $array)) == 1) { }

不过,性能和内存效率都不高。

对于删除,我建议使用array_filter。

function my_filter($n) { return $n >= 1 && $n <= 100; }
...
$newarray = array_filter($array, 'my_filter');

(顺便说一句,那是谁设计的语言。array_maparray_filter的参数顺序不同?!)

如果我是你,我会使用一种更简单的方法:

$size=50;
if($size <= 100 && $size >= 1) {
  return true;
} else {
  return false;
}

无函数调用,简单的整数比较。表现不错。