3

与えられた:

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

*$variable = get_variable('variable')* は、Zend Studio で「Assignment in condition」警告をスローします。警告の意味は理解できますが、その背後にある理論的根拠を知っている人はいますか? それは単にコーディング規約、読みやすさの問題などですか?

4

5 に答える 5

5

これは、この構成を許可するほとんどの言語の IDE/コンパイラによって発行される非常に一般的な警告です: =(割り当て) と==(比較) は非常に似ており、比較はifステートメント内でより一般的であるため、警告はそれを知らせるためにあります。本当は比較しようと思っていたところに、間違って割り当てを入れてしまったのかもしれません。

于 2010-11-22T21:30:43.963 に答える
3

これを行う理由は次のとおりです。

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

に非常に近い:

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

前者は、始めるのに適した方法ではありません。Zend Studio は、後者のケースを意味している可能性が高いと想定しているため、これについて警告します。これが有用なツールではないと言っているわけではありません。whileファイルを 1 行ずつ読み取る場合 (読み取る行がまだある場合) は、通常、ループ内でより受け入れられます。問題は、すぐに選択するのが難しいことです。

于 2010-11-22T21:30:24.263 に答える
0

=equality check の代わりに代入演算子を書くのは非常によくある間違い==です。

すべての場合において、このように割り当てを括弧で囲むことで、その警告を取り除くことができることを私は知っています。

if (($var = 1))
{
    /* ... */
}
于 2010-11-22T21:38:33.387 に答える
0

私はそれが主にそこにあると信じています。なぜなら、人々は通常二重の等号を忘れているからです。これにより、警告が取り除かれます。

if ($variable = get_variable('variable') != false) {
    // ...
}
于 2010-11-22T21:30:56.873 に答える
0

多くの場合、単なるタイプミスのため、「=」を忘れた場合

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

そのため、IDE はそれを確認することをお勧めします。

于 2010-11-22T21:31:30.877 に答える