1

我有一个表单,我需要检查输入是否属于 enum(0,1,2,3,..,n) 是否有一种简单的方法可以检查我的变量是否属于集合 [0:n] ?还是我必须写出每个条件(基本上n<10,所以它是可行的,但不是那种实践......)?

如果没有本地函数可以做到这一点,你能给我一个关于如何为此创建函数的提示吗?

谢谢 :)

4

3 回答 3

1

您可以使用range()和的组合in_array()

例子:

$number = 5;
$set = range(0, 10);
if (in_array($number, $set))
{
    //
}
于 2010-07-06T15:25:30.930 回答
1
$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...);
于 2010-07-06T15:26:04.447 回答
1

您可以设置范围并运行in_array,但这可能对性能不利。PHP 将在内部循环遍历您提供的数字以创建一个全新的(可能是巨大的)数组,然后再次循环遍历该数组以查看 X 是否在某处。对于简单的“是否在这些数字范围内”检查而言,这比必要的工作量要多得多。

坚持这两个条件可能是最好的方法,特别是因为它更具可读性。如果出于某种原因,这确实对您有用,您也可以创建一个辅助函数。

function is_within_inclusive($x, $start, $end) {
    return $x >= $start && $x <= $end;
}

但是,如果您已经定义了范围,无论如何,出于其他原因,in_array似乎很好。

于 2010-07-06T15:26:48.227 回答