我想检测变量是0、1、2、3还是4。如何使用preg_match()
?它和if($var==0||$var==1||$var==2||$var==3||$var==4)
之间的性能如何?
if (in_array($var, range(0,4), true)) {
// good
}
第三个参数将进行严格的比较,因此$var
必须是整数
直接比较绝对比使用preg_match()
快得多
if (is_int($var) && $var<=4 && $var>=0){
//Access granted
}
preg_match
就是这样做的。
/^[0-4]$/
if (preg_match('/^[0-4]$/', $var)) {
echo $var . " is ok";
} else {
echo $var . " is NOT ok";
}
在线演示
进行直接比较几乎总是比regex快。即使不是在这种情况下(任何速度优势都可以忽略不计),我仍然会避免它,因为regex往往不那么简单。