2010-11-22 8 views
3

考える:Zend Studio IDEの "条件付き割り当て"警告の背後にある根拠は何ですか?

if ($variable = get_variable('variable')) { 
    // ... 
} 

* $変数= get_variable( '変数')*は、Zend Studioの '割り当ての条件で' 警告をスローします。私は警告が何を意味するのか理解していますが、その背後にある根拠が何であるか誰にでも分かりますか?それは単なるコーディング規約、可読性の問題なのですか?

+0

ZSを使用したことはありませんが、ネットビーンズではもう1組のカッコを追加することで警告を取り除くことができます。あなたの文を 'if(($ a = $ b))'のようにします。 – Maerlyn

答えて

5

これは、この構文を許可し、ほとんどの言語でのIDE /コンパイラによって発行された非常に一般的な警告です:=(割り当て)と==(比較)は非常に似ており、比較はif文の中で、より一般的であるため、警告がありますちょうどあなたがあなたが実際に比較を意図していた間違いで課題に入れたかもしれないことをあなたに知らせるためにそこに。

3

ので、この処理を行います。

if ($variable = get_variable('variable')) { 
    // ... 
} 

はに非常に近いです:

if ($variable == get_variable('variable')) { 
    // ... 
} 

前者は正確に得るための良い方法ではありません。 Zend Studioは、後者の場合を意味する可能性が高いと想定しているため、これについて警告します。これは便利なツールではないと言っているわけではありません。 (読むためにラインが残っている間に)これは、行毎にファイルを読み込むために、whileループ内で通常より受け入れています。問題は、すぐに取り出せないことです。

0

私は、人々は通常、二重の等号を忘れているので、それは主にあります信じています。これは警告を取り除く必要があります:あなたは1「=」

if ($a = $b) { /* $a and $b equal? */ } 

を忘れてしまった場合

if ($variable = get_variable('variable') != false) { 
    // ... 
} 
0

しばしばそのわずか誤植ので、だから、IDEはそれを見てすることをアドバイス。

0

これは、代入演算子=代わりの平等チェック==を書くために非常に非常によくある間違いです。私はあなたがこのような括弧内の割り当てをラップすることにより、その警告を取り除くことができます知っているすべての場合において

if (($var = 1)) 
{ 
    /* ... */ 
} 
関連する問題