为什么我看到人们正在if (false !== $var) {
而不是if (false === true) {
答案 0 :(得分:6)
这个答案由三部分组成:
(false !== $var)
而不是if (false === true)
因为经常犯的错误是忘记放置两个=
导致意外归属而不是比较,一些程序员决定总是将等式的不变部分放在左侧。这样,意外分配是不可能的,你不会冒险获得
if ($var = false)
为变量$var
指定false,并且始终评估false而不是所需的
if ($var == false)
===
或!==
比较变量的类型及其值,而==
和!=
比较值并转换类型需要的。
示例:
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
的值相同,但可能不是同一类型。
(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>
在你的情况下,看起来很丑陋,如果明智的话,编程习惯会被用到他们的逻辑目的。