我有一个表单,我需要检查输入是否属于 enum(0,1,2,3,..,n) 是否有一种简单的方法可以检查我的变量是否属于集合 [0:n] ?还是我必须写出每个条件(基本上n<10,所以它是可行的,但不是那种实践......)?
如果没有本地函数可以做到这一点,你能给我一个关于如何为此创建函数的提示吗?
谢谢 :)
您可以使用range()
和的组合in_array()
。
例子:
$number = 5;
$set = range(0, 10);
if (in_array($number, $set))
{
//
}
$set = range(0,n);
if (in_array ($value, $set)) {
print "IS IN ARRAY!";
}
这适用于从 0 到 n 的范围,如果您想指定特定范围。fe 0,1,3,7,你可以使用
$set = array(0,1,3,7...);
您可以设置范围并运行in_array,但这可能对性能不利。PHP 将在内部循环遍历您提供的数字以创建一个全新的(可能是巨大的)数组,然后再次循环遍历该数组以查看 X 是否在某处。对于简单的“是否在这些数字范围内”检查而言,这比必要的工作量要多得多。
坚持这两个条件可能是最好的方法,特别是因为它更具可读性。如果出于某种原因,这确实对您有用,您也可以创建一个辅助函数。
function is_within_inclusive($x, $start, $end) {
return $x >= $start && $x <= $end;
}
但是,如果您已经定义了范围,无论如何,出于其他原因,in_array似乎很好。