如果陈述为真或非假

时间:2019-03-04 04:49:33

标签: php if-statement boolean

我有两个这样的陈述:

$ready = true;

if($ready === true) {
    echo "it's ready!";
}

这:

$ready = true;

if($ready !== false) {
    echo "it's ready!";
}

我知道这些含义与=== true是同一件事,而!== false是同一件事。我看到人们使用否定类型(不是假或不是{something})。像这样:https://stackoverflow.com/a/4366748/4357238

但是使用一种或另一种的优缺点是什么?有什么性能上的好处?有任何编码好处吗?我认为使用否定类型而不是简单的=== true会造成混淆。任何输入将不胜感激!谢谢

4 个答案:

答案 0 :(得分:3)

这些并不意味着同一件事,您可以在下面看到这一点:

$ready = undefined;

if($ready === true) {
  console.log("it's ready 1");
}

if($ready !== false) {
  console.log("it's ready 2");
}

如有疑问,请坚持使用===。您正在将其与实际情况进行比较。 “这应该完全等于true”与“这应该等于任何东西但必须完全为false”是2个独立的语句,第二个语句包含很多将为true的值(如上所示,undefined并非完全为false,因此这会是真的)。​​

答案 1 :(得分:1)

大多数PHP函数会从失败的手册中返回false,例如strpos

  

返回针相对于针所在的位置   干草堆字符串的开头(与偏移量无关)。另请注意   该字符串位置从0开始,而不是1。

     

如果找不到针,则返回FALSE。

因此它返回一个整数 false ,那么使用strpos() === true

是错误的

strpos() !== false是检查结果的正确方法。

答案 2 :(得分:0)

这与性能无关,它们也不相同。它有助于我们减少不必要的if语句。

考虑一下:有一个变量foobarbaz,其值可以是 foo / bar / baz / foobar / barbaz中的任何值。如果值不是< strong> foo 。所以不要这样写:

if(foobarbaz === "bar" || foobarbaz === "baz" || foobarbaz === "foobar" || foobarbaz === "barbaz") {
    //some statement
}
else if(foobarbaz === "foo") {
    //do nothing
}

您可以这样写:

if(foobarbaz !== "foo") {
    //some statement
}

您可以看到我们能够消除不必要的else语句。

答案 3 :(得分:0)

在php ==中,仅比较值是否相等。举例

$ ready ='true';

if($ready == true) {
    echo "true";
}
else{
    echo "false";
}

打印为true,但是如果与===比较,则不仅检查值,还检查数据类型。因此,它与===进行比较,会显示错误。

谈论!==的工作原理相同。因此,如果使用

,则输出不是问题
if($ready === true) 

if($ready !== false)

无法比较这两个,因为两者相同。