用于布尔值的PHP IF语句:$ var === true vs $ var

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (100)

我知道这个问题并不重要。但是我一直在想:

下列哪一种语句是最好和最快使用的?

<?php

$variable = true;

if($variable === true)
{
    //Something
}

if($variable)
{
    // Something
}


?>

我知道==是精确匹配布尔值。不过,是否真的有改善呢?

提问于
用户回答回答于

使用if ($var === true)if ($var)不是一个风格的问题,而是一个是否正确的问题。因为if ($var)if ($var == true)是一样的==比较不检查类型。所以1 == true是真的,但是1 === true是假的。

用户回答回答于

至于速度,这可能是微不足道的。

至于哪个if语句最好用来测试,答案可能取决于预期的转换和$ variable可以具有的值。

如果$ variable使用0和1作为真/假标志,那么if($ variable)或者if($ $ variable)将会工作,但是如果它是strpos()中的整数结果,你会遇到问题...如果可能的话,我建议使用一个实际的布尔值而不是0/1。

也许这将有助于澄清; 注释$ var的变化来看各种结果。

<?php

$var = true;
$var = 1;

$var = false;
$var = 0;

if ( $var ) {
    echo 'var = true <br />';
}

if ( $var === true ) {
    echo 'var is a boolean and = true';
}

if ( !$var ) {
    echo 'var = false <br />';
}

if ( $var === false ) {
    echo 'var is a boolean and = false';
}

扫码关注云+社区

领取腾讯云代金券