2016-04-19 6 views
3

今日私は質問に直面した、私はそれに答えることができなかった 私はPHPプログラムを作ってみたが、正確な理由を見つけることができませんでした($ a == 5と5 == $ a)はブール値trueを出力し、$ a!= 5の場合は を出力します($ a == 5と5 = = $ a)は私にブール偽の出力を与えます 誰でも私の言葉の観点から$ a == 5と5 == $ aの違いを教えてください。これによって影響されないように

**Program** 
$a = 3; 
var_dump(5==$a); 
var_dump($a==5); 
$a = 5; 
var_dump(5==$a); 
var_dump($a==5); 


**Output** 
boolean false 

boolean false 

boolean true 

boolean true 
+4

位置を切り替えるだけの違いはありません。 – aldrin27

+2

それはちょうど呼ばれています:yoda条件:http://stackoverflow.com/a/28840422/3933332そうでなければ違いはありません – Rizier123

答えて

7

比較は、あなたが最初に書く価値。しかし、リテラルを最初に置くのがベストプラクティスです。 5 == $xあなたが混乱して1つの等号のみを入力すると、偶発的な値の代入ではなくエラーが発生するため、デバッグがはるかに簡単です。あなたが忘れてしまった場合

+1

それは決して考えませんでした...私は約20年と考えられていたので、前。 Dang私は老いています.... – Andreas

+0

あなたはこの比較が 'yoda' comparaisonと呼ばれていることを指摘するかもしれません – zizoujab

0

は差

しかし5 == $aは1 '=' いくつかのエラーを防ぐことができます。 = 1

  • 例$ Aの

    あなたがあれば($ = 5)書く場合 - (5 = $ a)の場合は、書く場合は$値は5

  • なり - あなたがエラーを得た
+1

私は最後のものがエラーを生成すると思います。 – JanLeeYu

0

これは、誤って比較の代わりに割り当てを使用しないようにする単なる技法です。 if演算子は$a = 5をうまく受け取りますが、5 = $aはエラーをスローして、厄介なバグを作りません。

0

5 == $aは、一般的にヨーダ条件と呼ばれ、論理比較には影響しませんが、論理的にこの形式$a == 5

と同じです。

https://en.wikipedia.org/wiki/Yoda_conditions

常にtruthyまたはfalsyいずれかとして評価しますが、実際にインデント条件チェックを実行しないであろう、条件に不慮の割り当てを防ぐために、一般的にPHPで、好ましい:

if ($a = 5) { 
    // always run... oops 
} else { 
    // never run 
} 

WordPress PHP Coding Standardsにもこの説明があります。

関連する問題