我可以检查一些整数值(来自用户输入,因此应该被过滤)是否在这样的特定范围内:
<?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函数而不是编写我的函数。
答案 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_map
和array_filter
有不同的参数顺序?!)
答案 1 :(得分:0)
如果我是你,我会采用更简单的方法:
$size=50;
if($size <= 100 && $size >= 1) {
return true;
} else {
return false;
}
无函数调用,简单整数比较。表现不错。