3

私は PHP を初めて使用し、PHP == 演算子が Javascript と同様の型強制を行うことに気づかなかったため、1 日を浪費するバグに遭遇しました。

Douglas Crockford が、Javascript では == 演算子を決して使用せず、常に === 演算子を使用することを推奨していることを知っています。

型強制を想定しない方法でコーディングする場合、PHP で同じアドバイスを使用して、== 演算子を使用しないことはできますか? === 演算子を常に使用しても安全ですか、それとも注意が必要な落とし穴がありますか?

4

3 に答える 3

8

デフォルトで使用===し (発生したばかりの問題を回避するため) ==、便利なように必要なときに使用する必要があります。

たとえば、$_GETまたは類似のパラメーターを取得している場合、パラメーターは文字列trueまたは、またはfalseブール値のまたはである可能性があります。個人的には全部チェックしていますが、意識して気を付ければ正当なユースケースもあるかもしれません。truefalse==

于 2012-05-08T00:18:26.297 に答える
4

=====、特定の理由で存在します。投稿で既に述べたように、==型強制を行います。

私は厳密に型付けされたプログラミングのバックグラウンドを持っているため、あなたのように型強制を必要としません。この場合、常に使用しても安全===です。

もちろん、強制が必要な場合は==.

制御できない入力 (GET/POST パラメーター、API 応答) の場合、==キャストを使用するか使用することができます。

于 2012-05-08T00:20:25.193 に答える
0

var_dump('1' == 1);returnbool(true)var_dump('1' === 1);returnbool(false)は、値は同じですが型が異なるためです。1 つは文字列で、もう 1 つは int です。

===チェックする型がわかっている場合にのみ使用してください。

于 2012-05-08T00:33:15.717 に答える