1

我有一个$var必须是的变量,如果不是,则抛出错误

if($var != "one" && $var != "two")
{
    exit('$var must be either one or two');
}

这行得通。然而,作为$var一个字符串,只能保存一个值而不是两者,所以我想知道这样写是否不合逻辑?

4

4 回答 4

5

没关系,不合逻辑的代码是($var == 'one' && $var == 'two')

您正在检查它不是一个或两个 - 一个变量不能“不是”无穷无尽的值。

于 2012-07-07T16:09:09.890 回答
3

你可以这样尝试:

$possible = Array( "one", "two" );
if(!in_array($var, $possible) ) {
    echo "$var can be either of: " . implode($possible, ", ");
}

这样,您以后可以包含更多要检查的值。

于 2012-07-07T16:09:54.380 回答
2
if( !( $var == "one" || $var == "two" ) )
{
    exit('$var must be either one or two');
}

这将是我检查 $var 容器是“一”还是“二”的方式。如其他答案所述,还有其他选择,但为什么过于复杂?

于 2012-07-07T16:08:00.437 回答
-1

写你写的东西是完全合乎逻辑的!

您正在写的是,如果 $var 不是一个(这意味着它仍然可以是其他任何东西)并且如果 $var 也不是两个(此时您已经排除了两种可能性),那么抛出错误!

另外,我建议您使用throw new Exception('Error Message');

于 2012-07-07T16:08:14.860 回答