2012-04-27 91 views
-1

我在寻找什么是差异/优势很好地解释了使用下列哪项:FALSE if语句

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

回答

1
if (!$whatever) 

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

if ($whatever == FALSE) 

评估是否$无论是等于FALSE

大多数人会说if ($whatever == FALSE)是错误的,因为如果你想想另一个situtation if ($whatever == TRUE)你可以看到,这是愚蠢的;你可以使用if($whatever)。当你做if ($whatever == FALSE)感觉他们是一个额外的毫无意义的步骤来评估比较,即使我们不需要。

他们真的是没有优势或劣势,以做它自己的方式,因为他们有同样的效果,但另一些人你觉得你傻写if ($whatever == FALSE)($whatever == FALSE觉得不必要的复杂,Rube Goldbergif ($whatever == FALSE)也可能执行起来较慢,但是可以忽略不计。

3

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

3

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

注意:这两个都会为“错误”值返回true。如:

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

这些都转换为Boolean FALSE,这== FALSE(和!FALSETRUE)。

3

虽然这些问题的回答似乎是显而易见的,也许它可能是一个好主意ellaborate:

如果(布尔表达式)构建检查表达式是否等于真。

$whatever = false; 

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

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

if(true == true); 

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

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

TJHeuvel是正确的,在这种情况下使用非运算符是首选,因为它更简洁。考虑使用非运算符的东西不是微不足道的,例如:

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

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