为什么这个条件语句不起作用?

时间:2014-02-20 16:47:59

标签: php if-statement

我在PHP中有这个函数来检查一个数字是1还是0,如果不是没有访问权限。这是为了在我的一个游戏中实现的轻量级安全系统,以帮助防止大多数作弊。

$number = 1;
if ($number<>0 || $number<>1){
    die("nope");
}

但是,当我在上面运行此代码时,会回显nope。为什么呢?

5 个答案:

答案 0 :(得分:3)

&lt;&gt;比较运算符与!=(不等于)相同。 ||是OR比较运算符。在上面的条件语句中,如果任一表达式不为真,则代码块将执行。从1!= 0开始,代码块将执行。

答案 1 :(得分:2)

您正在检查$number是否大于/小于0或大于/小于1.由于1大于0,因此第一个条件为真且语句为真。所以你得到消息'nope'。

将其更改为:

if ($number <> 0 && $number <> 1){

答案 2 :(得分:2)

您的代码总是通过,它检查$ number是否为1或不为零 - 尝试正确的解决方案:

$number=1;
if (!($number==0 || $number==1)){
  die("nope");
}

答案 3 :(得分:2)

你的第一个条件$number<>0是真的。 <>表示不等于(!=)。 1 != 0是真的。

所以如果条件,它总是在里面。

答案 4 :(得分:2)

$number<>0 || $number<>1为1时,您的条件$number将为真,因为1不等于0.由于您使用的是||,因此true || <anything>会发生短路是的。

您想在此处使用&&。检查$number是否不等于0或1。

$number=1;
if ($number<>0 && $number<>1){
  die("nope");
}

关注De Morgan's laws,你也可以这样做:

$number=1;
if (!($number==0 || $number==1)){
  die("nope");
}