首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于布尔值的PHP IF语句:$var === true vs $var

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

Stack Overflow用户
提问于 2009-11-04 05:07:30
回答 5查看 98.5K关注 0票数 32

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

下面哪一条IF语句是最好、最快的?

代码语言:javascript
复制
<?php

$variable = true;

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

if($variable)
{
    // Something
}


?>

我知道===将精确地匹配布尔值。然而,真的有什么改进吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-04 05:09:58

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

票数 71
EN

Stack Overflow用户

发布于 2009-11-04 05:45:44

至于速度,我同意Niels的观点,它可能可以忽略不计。

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

如果$variable使用0和1作为true/false标志,那么If ( $variable )或if ( !$variable )可以工作,但如果它是一个整数结果,如strpos(),则会遇到问题...如果可能,我建议使用实际的布尔值,而不是0/ 1。

..。也许这将有助于澄清;注释掉$var的变体以查看各种结果。

代码语言:javascript
复制
<?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';
}
票数 11
EN

Stack Overflow用户

发布于 2010-02-02 02:48:11

只有一个事实:

time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r == true) {} }'

time php -r '$r = true; for($i = 0; $i < 10000000; $i++) { if($r) {} }'

第二个比第一个快。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1670138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档