如果数字不是 1 或 0,则给出错误


give error if number is anything other than 1 or 0

<?php
$gender = 0;
if (($gender != 0) || ($gender != 1))
{
    die('error:Must select a gender.');
}
?>

如果性别不是10,这应该会给出错误。所以如果我给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时。

相关文章: