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

时间:2013-07-23 10:29:08

标签: php arrays filter integer range

我可以检查一些整数值(来自用户输入,因此应该被过滤)是否在这样的特定范围内:

<?php
  $size=50;
  var_dump(in_array($size,range(1,100)));
?>
如果大小在1到100的范围内,

将返回true。当然另一种方法是使用过滤器:

<?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函数而不是编写我的函数。

2 个答案:

答案 0 :(得分:3)

稍微有功能的方法(我不知道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有不同的参数顺序?!)

答案 1 :(得分:0)

如果我是你,我会采用更简单的方法:

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

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