2015-11-14 88 views
-1

这条if语句触发条件中的值,不管条件中的值如何,无论条件是否成立,条件为什么会触发执行。我试过了每一个场景,但是每次都会触发语句中的执行。如果语句条件触发,无论条件是否满足

if(1 != 1 && 1 != 2){ 
execute code 
exit(); 
} 

这里是确切的代码:

if($name1 != $winner && $name2 != $winner){ 
echo " The player you chose as winner is not associated with match id: $match_id "; 
exit(); 
} 
+1

不,这不是真的 - http://sandbox.onlinephpfunctions.com/code/a227c5ddd20c3e331bbed7a1c042438a3d4fc880 – user2655603

+0

正确的说法是不正确的,但在我的情况下它执行的代码 – user5420896

+0

无论条件为真,或者相同的代码也存在于其他地方。 (禁止疯狂的东西,像跳转到块的goto。)你真的试图用''''if(false)'''替换条件吗? – blues

回答

1

这是不可能的帖子中提到的条件,返回true

你说,如果你写的代码类似下面会发生什么。然而:以后如果()

if(1 != 1 && 1 != 2);{ 
    echo 'case 1'; 
} 

注意;。你确定你的代码在if()之后没有分号吗?如果您错误地放置了;,那么if语句被评估为单行语句,并且if语句块中的代码被if解释器视为以外的if条件的。基于更新的问题

编辑

请检查以下内容:

  1. $winner正确设置为的$name1$name2
  2. 验证$winner的变量声明范围是否正确 - 我已经完成了PHP的一段时间,但这可能还有其他要注意的地方。

除了这些,我没有看到任何其他原因,为什么这段代码应该表现你的态度。

+0

即时确定在括号后没有半分号 – user5420896

0

也许......请仔细看看所涉及的四个变量的值。

使用!=的比较可以给出一些令人惊讶的结果。

参见herehere。编辑:链接固定

即使没有解决这个问题,最好尽量使用!==尽可能。