1

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

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

4

2 回答 2

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_map并且array_filter有不同的参数顺序?!)

于 2013-07-23T10:34:52.917 回答
0

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

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

没有函数调用,简单的整数比较。很好的表现。

于 2013-07-23T10:30:47.337 回答