代码之家  ›  专栏  ›  技术社区  ›  webjawns.com

Zend Studio IDE中“条件分配”警告背后的原理是什么?

  •  3
  • webjawns.com  · 技术社区  · 14 年前

    鉴于:

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

    *$variable=get_variable('variable')*在Zend Studio中引发“Assignment in condition”警告。我明白警告的意思,但有人知道它背后的理由吗?它仅仅是编码约定、可读性等问题吗。?

    5 回复  |  直到 12 年前
        1
  •  5
  •   casablanca    14 年前

    这是IDE/编译器在大多数允许此构造的语言中发出的一个非常常见的警告:因为 = (转让)和 == (比较)非常相似,比较在 if 声明,警告只是为了让你知道,你可能错误地把作业放在了你真正想要比较的地方。

        2
  •  3
  •   Chris Laplante    14 年前

    这样做是因为:

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

    非常接近:

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

    前者并不是一个很好的实践。Zend Studio假设您更可能是指后一种情况,因此它警告您这一点。不是说这不是一个有用的工具。它通常在 while 循环,用于逐行读取文件(当仍有行要读取时)。问题是很难很快被发现。

        3
  •  0
  •   wajiw    14 年前

    我相信这主要是因为人们通常会忘记双倍的相等。这将消除警告:

    if ($variable = get_variable('variable') != false) {
        // ...
    }
    
        4
  •  0
  •   KingCrunch    14 年前

    因为如果你忘了一个“=”的话,这通常只是一个打字错误

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

    所以IDE建议你去看看。

        5
  •  0
  •   Henry H    14 年前

    写赋值运算符是很常见的错误 = 而不是相等检查 == .

    在任何情况下,我知道你都可以用这样的圆括号将赋值括起来来消除这个警告。

    if (($var = 1))
    {
        /* ... */
    }