2010-11-22 43 views
3

考虑:Zend Studio IDE中“条件赋值”警告的基本原理是什么?

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

的* $变量= get_variable( '变量')*抛出 '状况分配' 在Zend Studio的警告。我明白警告意味着什么,但是有人知道背后的理由是什么吗?它只是编码惯例,可读性等问题?

+0

从来没有使用过ZS,但是在NetBeans中,您可以通过添加另一对括号来消除警告。使你的陈述像'if(($ a = $ b))`。 – Maerlyn 2010-11-22 21:42:05

回答

5

这是的IDE /编译器在大多数语言,使这个结构发出一个很常见的警告:因为=(分配)和==(比较)非常相似,并且比较是比较常见的一种if语句中,该警告是只是在那里让你知道,如果你真的打算进行比较,你可能会犯错。

3

它这样做是因为:

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

非常接近:

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

前者是不完全是一个好习惯进入。 Zend Studio假定你更有可能意味着后一种情况,所以它会警告你。并不是说这不是一个有用的工具。通常在while循环中更容易接受,用于逐行读取文件(同时还有一行要读取)。问题在于很难快速挑选出来。

0

我相信这主要是因为人们通常会忘记双等于。这应该摆脱警告:

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

因为往往它只是一个错字,如果你忘记了一个“=”

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

所以IDE劝你看看吧。

0

编写赋值运算符=而非等号检查==是非常非常常见的错误。

在所有的情况下,我知道你可以通过将这个任务包装在括号中来摆脱这种警告。

if (($var = 1)) 
{ 
    /* ... */ 
} 
相关问题