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

2022-08-30 14:06:46

我知道这个问题并不重要。然而,我一直在想:

以下哪一个 IF 语句是最好和最快使用的?

<?php

$variable = true;

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

if($variable)
{
    // Something
}


?>

我知道 ===是完全匹配布尔值。但是,真的有什么改进吗?


答案 1

使用或不是风格问题,而是正确性问题。因为 与 相同。比较不会检查类型。所以是真的,但却是假的。if ($var === true)if ($var)if ($var)if ($var == true)==1 == true1 === true


答案 2

就速度而言,我同意Niels的观点,它可能可以忽略不计。

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

如果$variable使用0和1作为真/假标志,那么如果( $variable)或如果( !$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';
}

推荐