PHP IF语句布尔值:$ VAR ===真正VS $ VAR
-
13-09-2019 - |
题
我知道这个问题是不是真的很重要。但是我一直在想:
以下哪个IF语句的是最好的,最快的使用?
<?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语句是最好的测试作为,答案很可能取决于预期的铸造和值$变量可以有。
如果$变量是用0和1为真/假标志,那么如果($变量),或者如果(!$变量)的工作,但如果它是在strpos(),你会遇到问题的整数结果...如果可能的话,我建议使用实际的布尔值,而不是0/1。
...也许这将有助于澄清;注释$变种的变化看的各种结果。
<?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';
}
只是一个事实:
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) {} }'
在第二个比第一速度更快。
我真的不深入到PHP的技术的东西,但在第一种情况下
if($variable === true)
$变量必须具有完全相同的类型为作为真正的if语句为真。换句话说,$变量不仅解决为真,但也必须是一个布尔值。所以这是2点的操作,值检查和类型检查。
在第二种情况下
if($variable)
$变量只需要解决为true。所以,只发生值检查。我推断,是以计算机少一点的时间。
实际上来说:在速度上的差异可能是可以忽略不计
。===在的strstr / stristr真正有用的,当第一针处于在草堆位置0。如果你不使用===或!==你可以有你的手的错误。
$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;