2012-05-08 8 views
3

可能性の重複:
php == vs === operator使用する===、==オーバー==、= PHPで

私は===の違いを理解し、!====!= PHPで、しかし私はいつも自分自身が===!==を好んでいるのがわかりますが、私には本当の理由はありません。 PHP.netのドキュメントでは、いくつかの組み込み関数の戻り値を確認するのに、===を使用するべきであるという警告がしばしばあります。だから私の質問はなぜ私は別の演算子の1つのセットを使用する必要がありますか?

感謝:)。それはあなた(または将来的にあなたのコードを維持するために持っている開発者は)それを期待(とタイプの会話のためのルールは通常、道を変換しない場合

+0

適切なときに使用してください。あなたがその違いを理解しているなら、その質問は何ですか?私の近くの票をすべて使い切ったが、これは全く建設的ではない質問である。 – kapa

+0

このような質問をするには、より適切なサイトがありますか?プログラマーがいます。スタックエクスチェンジ? – ale

+2

私は 'programmers.SE'のよくある質問に精通していません。私の問題は、意見、討論、議論、投票、議論の延長などを要請する可能性があるということです。個人的なものはありません。 '==='と '=='の両方に場所があるので、あなたは本当に「もう一方のものを使う」ということはできません。 – kapa

答えて

5

自動型変換は、予想外の偽陽性と偽陰性につながることができます複雑で、言語によって異なるので、混乱の余地は十分にある)。

は必ずない限り、3つの文字のバージョン必要タイプの会話を使用しています。

3

===および!==は、両方のオペランドが同じタイプの場合にのみ使用してください。それ以外の場合は

から==!=を使う - 暗黙のキャストは、我々はあなたがそれが失敗したときに成功しおよびFALSEとして0を返すことが機能を使用する場合

+4

@ThiefMaster:私は大好きですこれはPHPがすべてのサードパーティのデータソースから文字列としてデータを取得するため、そうでなければプログラミングが連続的なキャストになるからです。 PS:私はいつも変数がどのような型か分かっているので、暗黙のキャスティングはまったく問題ではありません。 – zerkms

+2

@ThiefMaster:恐ろしいことではありません:-) PS:私は 'if($ string)'を ' if(strlen($ string)> 0) 'それは私のために多くの意味があるからです。 **あなたが選ぶのはどちらですか? – zerkms

+0

@Thief 'false == 'false''は' false'です。 '! 'false' === true'も' false'です。 – deceze

1

===!==のためのPHPは重要である愛するものだからです。 PHPでは0もFALSEに等しいので、関数が失敗したという結論につながります。 somefunctionを仮定

if(somefunction() == 0) { 
    // Do something 
} 

機能は、それが失敗したときのリターンコードがFALSEである場合、上記のスニペットがトリガする正常終了、およびFALSE場合に0を返します。応答が本当に最も一般的な理由は、関数は数/文字列を返し、エラーの場合にfalseを返すことがあり、その後で0

3

である場合にのみトリガするよう===を使用して

は、そこからあなたを防ぐことができます。 0が有効な結果で、falseがエラーを示す場合は、===を使用して区別しなければなりません。ただし、常に===を使用すると、予期しない動作が発生する可能性があります。たとえば、nullが返され、有効でない値も考慮されますが、型チェックはfalseのみです。したがって、データがあなた自身のソースコード/ PHP関数から来ていて、無効な値がちょうど1であることがわかっている場合は、厳密なチェックを使用してください。ほとんどの場合、==は安全な選択ですが、特に外部データを扱う場合は、制御できません。

関連する問題