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

时间:2011-10-30 18:19:22

标签: php

<?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.');
}
?>

那看起来很邋and,它会起作用,或者我可以创建一个0和1的数组,并检查它是否在其中。我认为有点矫枉过正。

不确定我做错了什么。

3 个答案:

答案 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