我有一个$var
必须是一或二的变量,如果不是,则抛出错误
if($var != "one" && $var != "two")
{
exit('$var must be either one or two');
}
这行得通。然而,作为$var
一个字符串,只能保存一个值而不是两者,所以我想知道这样写是否不合逻辑?
我有一个$var
必须是一或二的变量,如果不是,则抛出错误
if($var != "one" && $var != "two")
{
exit('$var must be either one or two');
}
这行得通。然而,作为$var
一个字符串,只能保存一个值而不是两者,所以我想知道这样写是否不合逻辑?
没关系,不合逻辑的代码是($var == 'one' && $var == 'two')
您正在检查它不是一个或两个 - 一个变量不能“不是”无穷无尽的值。
你可以这样尝试:
$possible = Array( "one", "two" );
if(!in_array($var, $possible) ) {
echo "$var can be either of: " . implode($possible, ", ");
}
这样,您以后可以包含更多要检查的值。
if( !( $var == "one" || $var == "two" ) )
{
exit('$var must be either one or two');
}
这将是我检查 $var 容器是“一”还是“二”的方式。如其他答案所述,还有其他选择,但为什么过于复杂?
写你写的东西是完全合乎逻辑的!
您正在写的是,如果 $var 不是一个(这意味着它仍然可以是其他任何东西)并且如果 $var 也不是两个(此时您已经排除了两种可能性),那么抛出错误!
另外,我建议您使用throw new Exception('Error Message');