2010-07-06 77 views
1

我有一个表单,我需要检查输入是否属于枚举(0,1,2,3,..,n) 有没有简单的方法来检查我的变量是否属于set [0:n ]?或者我必须写出每个条件(基本上n < 10,所以这是可行的,但不是那个实际...)?有没有一种快速的方法来检查一个变量是否属于一个集合?

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

谢谢:)

+1

你是如何指定你的设置? – 2010-07-06 15:26:04

回答

1

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

例子:

$number = 5; 
$set = range(0, 10); 
if (in_array($number, $set)) 
{ 
    // 
} 
+0

谢谢,我不知道范围(),真的很实用。 – 2010-07-06 15:31:56

+0

不客气! – jeroen 2010-07-06 15:54:08

1
$set = range(0,n); 
if (in_array ($value, $set)) { 
    print "IS IN ARRAY!"; 
} 

如果你想使特定的范围内这是到n 范围从0真。 F.E. 0,1,3,7,您可以使用

$set = array(0,1,3,7...); 
1

你可以使range和运行in_array,但可能不会是伟大的表现。 PHP会在内部最终循环遍历你提供的数字来创建一个全新的(可能是巨大的)数组,然后再遍历整个数组以查看X是否在某处。对于一个简单的“在这些数字之内”检查来说,这是比完成更多的工作。

坚持这两个条件可能是最好的方法,尤其是因为它会更具可读性。如果出于某种原因,您也可以创建一个辅助函数,真的让您满意。

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

但如果你已经拥有了范围界定,反正其他原因,in_array似乎罚款。

相关问题