当前位置:  开发笔记 > 编程语言 > 正文

Zend Studio报告警告:条件分配.这真糟糕吗?

如何解决《ZendStudio报告警告:条件分配.这真糟糕吗?》经验,为你挑选了3个好方法。

我最近开始使用Zend Studio,它报告了以下类型的代码:

$q = query("select * from some_table where some_condition");
while ($f = fetch($q)) {
  // some inner workings
}

要停止警告,代码需要像这样写:

$q = query("select * from some_table where some_condition");
$f = fetch($q);
while ($f) {
  // some inner workings
  $f = fetch($q);
}

为什么这被标记为警告?这么糟糕吗?

我知道警告可能旨在阻止这样的错误:

$a = 1;
while ($a = 1) {
  // some inner workings
  $a++;
}

永远不会终止,因为1被分配给$ a,而$ a又返回1到while语句,而不是针对$ a进行测试,并且当$ a不是1时,将false返回到while语句.

容易出错的错误可以验证警告,但是在第二个例子中忘记在while块的末尾添加额外的$ f = fetch($ q),这也会导致永远不会终止的循环.如果我更改我的代码以删除警告,然后忘记在while块的末尾添加$ f = fetch($ q),Zend将不会发出警告!

因此,通过删除有关常见错误的警告,我正在为自己设置一个不同的常见错误.

走出锅,进入火中.



1> 小智..:
while (($row = $sql->db_Fetch("MYSQL_ASSOC")) != false)



2> winkbrace..:

因此,如果没有正当理由,您将无需重写所有代码:您可以在Window |中禁用对此潜在编程错误的检测 首选项,PHP | 语义分析.



3> Jesse Rusak..:

这可能被标记为警告,因为人们在表示"=="时经常误用"=".

例如:

$a = 1
while($a = 1) {
   $a++;
}

这永远不会终止,但如果你认为你写的是"==",那就应该.


检测此类错误的一种方法是反转语句:`1 == $ a`.PHP将抛出错误,因为左侧部分不可分配.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有