私はこの質問が本当に重要ではないことを知っています..しかし、私は疑問に思っていました:
次の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
はfalseです。
速度に関しては、私はNielsに同意しますが、おそらく無視できます。
どのifステートメントをテストするのが最善であるかについては、おそらく、予想されるキャストと$ variableの値に依存します。
$ variableが0および1をtrue/falseフラグとして使用している場合、if($ variable)またはif(!可能であれば、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';
}
ただ事実:
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) {} }'
2番目のものは最初のものよりも高速です。
私はPHPの技術的なことにはあまり詳しくありませんが、最初のケースでは
if($variable === true)
ifステートメントがtrueになるためには、$ variableのタイプがtrueとまったく同じでなければなりません。つまり、$ variableはtrueに解決するだけでなく、ブール値でもある必要があります。つまり、値チェックと型チェックの2つの操作です。
2番目の場合
if($variable)
$ variableはtrueに解決するだけです。したがって、値のチェックのみが発生します。私はそれがコンピュータに少し少ない時間がかかると推測します。
実際には、速度の違いはおそらく無視できる程度です。
===は、最初の針が干し草の山の位置0にあるときにstrstr/stristrで本当に役立ちます。 ===または!==を使用しない場合、手にバグがある可能性があります。
$str = "four score and...";
$position = strstr($str,'four');
if($position===FALSE) return FALSE;