我知道这个问题并不重要。然而,我一直在想:
下面哪一条IF语句是最好、最快的?
<?php
$variable = true;
if($variable === true)
{
//Something
}
if($variable)
{
// Something
}
?>
我知道===将精确地匹配布尔值。然而,真的有什么改进吗?
发布于 2009-11-04 05:09:58
使用if ($var === true)
或if ($var)
不是风格的问题,而是正确性的问题。因为if ($var)
和if ($var == true)
是一样的。并且==
比较不会检查类型。所以1 == true
是真的,但是1 === true
是假的。
发布于 2009-11-04 05:45:44
至于速度,我同意Niels的观点,它可能可以忽略不计。
至于哪条if语句最适合测试,答案可能取决于预期的类型转换和$variable可以具有的值。
如果$variable使用0和1作为true/false标志,那么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';
}
发布于 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) {} }'
第二个比第一个快。
https://stackoverflow.com/questions/1670138
复制相似问题