编码方法,为什么!== false

时间:2011-03-03 19:03:42

标签: php

为什么我看到人们正在if (false !== $var) {而不是if (false === true) {

3 个答案:

答案 0 :(得分:6)

这个答案由三部分组成:

  1. (false == $ var)和($ var == false)
  2. 之间的顺序差异
  3. ==和===
  4. 之间的区别
  5. 为什么您会看到人们正在(false !== $var)而不是if (false === true)
  6. 1。 (false == $ var)和($ var == false)

    之间的顺序差异

    因为经常犯的错误是忘记放置两个=导致意外归属而不是比较,一些程序员决定总是将等式的不变部分放在左侧。这样,意外分配是不可能的,你不会冒险获得

    if ($var = false)

    为变量$var指定false,并且始终评估false而不是所需的

    if ($var == false)

    2。 ==和===

    之间的区别

    ===!==比较变量的类型及其值,而==!=比较值并转换类型需要的。

    示例:

    0 == false // true
    1 == true // true
    
    0 === false // false
    1 === true // false
    
    0 !== false // true
    0 !== true // true
    
    false === false // true
    false === true  // false
    
    使用

    $var !== FALSE是因为许多内置PHP函数在出错时返回FALSE,并且成功时返回值。返回的值可能与TRUE的值相同,但可能不是同一类型。

    3。为什么您看到人们正在(false !== $var)而不是if (false === true)

    你的问题本身让人嗤之以鼻(这就是为什么OrangeDog的评论得到了很多评价):如果有人if (false === true),那么它将等于if(false)将永远不会执行封闭区块。它仍然会发生,例如在JavaScript中,部分代码是以服务器端语言生成的,如PHP。

答案 1 :(得分:0)

因为它完全不同。

第一个代码部分仅在var不为false时才打开if子句。它可以是零,null或空字符串。但不是boolean和false类型。

第二个是永远不会发生的矛盾。

答案 2 :(得分:0)

为什么我看到有人在进行if (false !== $var) {

逻辑比较是初学程序员的常见陪衬,通常可以看到 $var = false 什么意思 $var == false

因此,标准做法是鼓励程序员始终在右侧放置变量,因为$var=true在技术上是合法的,但会产生意外行为,而true=$var不合法并且会引发错误。< / p>

在你的情况下,看起来很丑陋,如果明智的话,编程习惯会被用到他们的逻辑目的。