-1

次のどれを使用することの違い/利点は何かについての良い説明を探しています:

if (!$whatever)またif ($whatever == FALSE)

4

4 に答える 4

3

これは同じですが、より簡潔であるため、ほとんどのプログラマーは !$value の記述を好みます。

于 2012-04-27T13:51:15.767 に答える
3

PHP の型ジャグリングのため、これらは同一です。

注: これらは両方とも、「falsey」値に対して true を返します。そのような:

  • 0
  • null
  • array() // empty array
  • '' // blank string
  • FALSE

これらはすべて boolean FALSE、 which == FALSE(および!FALSEis TRUE) に変換されます。

于 2012-04-27T14:00:34.400 に答える
3

質問の答えは明白に見えますが、おそらくそれは良い考えかもしれません:

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)

後者はより簡潔です (したがって、等しくない演算子)。

于 2012-04-27T14:07:17.337 に答える
1
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) 、おそらく実行が遅くなりますが、無視できます。

于 2012-04-27T15:03:41.723 に答える