<?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.');
}
?>
那看起来很邋and,它会起作用,或者我可以创建一个0和1的数组,并检查它是否在其中。我认为有点矫枉过正。
不确定我做错了什么。
答案 0 :(得分:5)
你使用错误的布尔运算符:
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();
}
有点长,但更具可读性。
答案 1 :(得分:2)
if (($gender != 0) && ($gender != 1))
^^
如果两项测试都属实,你想死。
答案 2 :(得分:1)
将或(||
)更改为和(&&
),它应该可以正常工作,因为您只想失败,当它是两者都不是0
而不是1
。