5

==変数を比較後または比較時に配置することは本当に重要===ですか?

if (null == $var) {

}

if ($var == null) {

}

コーダーがこの方法を好むのを常に見てきましたが、速度の違いのためですか?

アップデート:

質問を明確にしておらず申し訳ありません。知りたいのは と の違いではなく、 と の==ような===表現なので、コード例を変更しました。null == $var$var == null


結論

機能またはパフォーマンスの違いはありません。これをベスト プラクティスまたは単なるコーディング スタイルと見なす人もいます。ところで、それはクールな名前を持っています: Yoda Conditions :)

参考までに: PHP エラー メッセージはこのスタイルを使用します。

PHP Fatal error:  Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

この質問が ( The 3 different equals ) not ( 'false === $var' と '$var === false' の違いは何ですか? )に重複しているとマークされている理由がわからない

4

3 に答える 3

12

バグのデバッグを非常に困難にするタイプミスを防ぎます。=の代わりに誤って書いてしまった場合に備えて==:

if ($var == null)  # This is true in case $var actually is null
if ($var =  null)  # This will always be true, it will assign $var the value null

代わりに、それらを切り替える方が安全です。

if (null == $var)   # True if $var is null
if (null =  $var)   # This will raise compiler (or parser) error, and will stop execution.

この問題がある特定の行で実行を停止すると、デバッグが非常に簡単になります。逆の場合は、if条件を入力して変数の値を失う可能性があり、簡単に見つけることができないため、非常に困難です。

于 2013-10-14T01:13:40.040 に答える
2

次のコードで説明できると思います。

echo (( 0 == NULL ) ? "0 is null" : "0 is not null")  ."\n";
echo  (0 === NULL) ? "0 is null" : "0 is not null"  ;

次のように出力されます。

0 is null
0 is not null

演算子は値と型の===両方をチェックしますが、0 は数値であり、NULL は NULL 型です。

演算子は==値のみをチェックし、ゼロは「false」または「null」にキャストできるため、最初の行で得られる「真実」

于 2013-10-14T01:15:53.927 に答える
0

これからの結果をifs と比較します。

 echo "Test '1abc' == 1 - ";
 if ('1abc' == 1) {
    echo 'ok';
 } else {
    echo 'fail';
 }

 echo "\nTest '1abc' === 1 - ";
 if ('1abc' === 1) {
    echo 'ok';
 } else {
    echo 'fail';
 }

次に、このページhttp://php.net/manual/en/language.types.type-juggling.phpを読んでください。これは非常に興味深い講義です ;)

于 2013-10-14T01:08:19.900 に答える