FALSE if语句

时间:2012-04-27 13:49:06

标签: php

我正在寻找一个很好的解释,说明使用以下哪个方面的差异/优势:

if (!$whatever)if ($whatever == FALSE)

4 个答案:

答案 0 :(得分:3)

它是相同的,但大多数程序员更喜欢写!$ value,因为它更简洁。

答案 1 :(得分:3)

由于PHP的类型杂耍,这些是相同的。

注意:对于“falsey”值,这两个都将返回true。如:

  • 0
  • null
  • array() // empty array
  • '' // blank string
  • FALSE

这些全部转换为布尔FALSE== FALSE!FALSETRUE)。

答案 2 :(得分:3)

虽然问题的回答看起来很明显,但也许这可能是一个好主意:

if(boolean expression)构造检查表达式是否等于true。

$whatever = false;

!$whatever evaluates to:    
!($whatever) = true;

$whatever == false evaluates to:    
($whatever == false) = true;

if(true == true);

主要区别在于! (不是运算符)反转布尔值(false - > true),if构造检查此反转是否等于true。

等于运算符计算$ whatever是否等于值(不一定是布尔值),if构造检查等于表达式是否为真。

TJHeuvel在这种情况下首选使用not运算符是正确的,因为它更简洁。考虑使用not运算符来处理不那么重要的事情,例如:

if((ProgramState == ProgramState.Ready) == false) vs    
if (!(ProgramState == ProgramState.Ready)) vs    
if (ProgramState != ProgramState.Ready)

后者更简洁(因此不等于运算符)。

答案 3 :(得分:1)

if (!$whatever)

只需获取$ whatever的值并将其反转。

if ($whatever == FALSE)

评估$ whatever是否等于FALSE

大多数人会说if ($whatever == FALSE)是错误的,因为如果你想到另一种情况if ($whatever == TRUE),你会发现它很愚蠢;你可以使用if($whatever)。当你做if ($whatever == FALSE)时,即使我们不需要,也会感觉他们是评估比较的额外不合理的步骤。

他们真的没有优势或劣势,因为他们有同样的效果,但你觉得写作if ($whatever == FALSE)愚蠢的其他人。 ($whatever == FALSE感到不必要的复杂和Rube Goldbergif ($whatever == FALSE)执行速度可能较慢,但可以忽略不计。