<?php
$gender = 0;
if (($gender != 0) || ($gender != 1))
{
die('error:Must select a gender.');
}
?>
如果性别不是1
或0
,这应该会给出错误。所以如果我给5
它应。如果我把它1
它不应。如果我给它0
它不应。
我在考虑一些解决方法
<?php
$gender = 0;
if ($gender == 0)
{
//number is okay
}
else if ($gender == 1)
{
//number is okay
}
else
{
die('error:Must select a gender.');
}
?>
好吧,这看起来很草率,它可以工作,或者我可以创建一个带有 0 和 1 的数组并检查它是否在其中。 我认为有点矫枉过正。
不知道我做错了什么。
您使用了错误的布尔运算符:
if (($gender != 0) || ($gender != 1)) {
}
如果性别也是 0,也会输入此内容,因为它不是 1,反之亦然。您需要做的是:
if (($gender != 0) && ($gender != 1)) {
}
看看这个表:
gender A (gender != 0) B (gender != 1) A || B A && B
----------------------------------------------------------------
0 false true true false
1 true false true false
5 true true true true
还要注意约书亚在评论中的建议:
if (($gender == 0) || ($gender == 1)) {
/* number is ok */
} else {
die();
}
这有点长,但更具可读性。
if (($gender != 0) && ($gender != 1))
^^
如果两个测试都是真的,你想死。
将
or ( ||
( 更改为 和 ( &&
(,它应该可以工作,因为您只想失败,当它既不0
又不1
时。