我最近开始使用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将不会发出警告!
因此,通过删除有关常见错误的警告,我正在为自己设置一个不同的常见错误.
走出锅,进入火中.
while (($row = $sql->db_Fetch("MYSQL_ASSOC")) != false)
因此,如果没有正当理由,您将无需重写所有代码:您可以在Window |中禁用对此潜在编程错误的检测 首选项,PHP | 语义分析.
这可能被标记为警告,因为人们在表示"=="时经常误用"=".
例如:
$a = 1 while($a = 1) { $a++; }
这永远不会终止,但如果你认为你写的是"==",那就应该.