次のどれを使用することの違い/利点は何かについての良い説明を探しています:
if (!$whatever)
またif ($whatever == FALSE)
これは同じですが、より簡潔であるため、ほとんどのプログラマーは !$value の記述を好みます。
PHP の型ジャグリングのため、これらは同一です。
注: これらは両方とも、「falsey」値に対して true を返します。そのような:
0
null
array() // empty array
'' // blank string
FALSE
これらはすべて boolean FALSE
、 which == FALSE
(および!FALSE
is TRUE
) に変換されます。
質問の答えは明白に見えますが、おそらくそれは良い考えかもしれません:
if (ブール式) コンストラクトは、式が true に等しいかどうかをチェックします。
$whatever = false;
!$whatever evaluates to:
!($whatever) = true;
$whatever == false evaluates to:
($whatever == false) = true;
if(true == true);
主な違いは次のとおりです。(not 演算子) はブール値を反転し (false -> true)、if コンストラクトはこの反転が true に等しいかどうかをチェックします。
等価演算子は、$whatever が値 (ブール値である必要はありません) と等しいかどうかを評価し、if コンストラクトは等価式が真かどうかをチェックします。
TJHeuvel は、not 演算子の使用がより簡潔であるため、この場合に優先されるという点で正しいです。以下のように、些細なことで not 演算子を使用することを検討してください。
if((ProgramState == ProgramState.Ready) == false) vs
if (!(ProgramState == ProgramState.Ready)) vs
if (ProgramState != ProgramState.Ready)
後者はより簡潔です (したがって、等しくない演算子)。
if (!$whatever)
$ whateverの値を取り、それを反転するだけです。
if ($whatever == FALSE)
$whateverがFALSEに等しいかどうかを評価します
if ($whatever == FALSE)
別の状況について考えると if ($whatever == TRUE)
、それがばかげていることがわかるので、ほとんどの人は間違っていると言うでしょう。あなたはただ使うことができますif($whatever)
。あなたがそうするとき、if ($whatever == FALSE)
それは私たちがそうする必要がないはずであるとしても、彼らが比較を評価する余分な不必要なステップであるように感じます。
彼らは同じ効果を持っているので、彼らのやり方でそれを行うことには実際には利点も欠点もありませんが、あなたが書くのは愚かだと思う他の人々if ($whatever == FALSE)
。 ($whatever == FALSE
不必要に複雑に感じ、ルーブゴールドバーグ。またif ($whatever == FALSE)
、おそらく実行が遅くなりますが、無視できます。