私はこの質問がそれほど重要ではないことを知っています..しかし、私は疑問に思っていました:
次の IF ステートメントのうち、使用するのに最適かつ最速のものはどれですか?
<?php
$variable = true;
if($variable === true)
{
//Something
}
if($variable)
{
// Something
}
?>
=== はブール値と正確に一致することを知っています。しかし、本当に改善はありますか?
私はこの質問がそれほど重要ではないことを知っています..しかし、私は疑問に思っていました:
次の IF ステートメントのうち、使用するのに最適かつ最速のものはどれですか?
<?php
$variable = true;
if($variable === true)
{
//Something
}
if($variable)
{
// Something
}
?>
=== はブール値と正確に一致することを知っています。しかし、本当に改善はありますか?
if ($var === true)
orの使用if ($var)
はスタイルの問題ではなく、正確さの問題です。if ($var)
と同じだからですif ($var == true)
。また、==
比較は型をチェックしません。それ1 == true
は本当ですが、1 === true
間違っています。
速度に関しては、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';
}
ただの事実:
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;