2012-12-26 55 views
4

我正在使用zend工作室在PHP編碼。
要解決「條件賦值」,使用!== false減慢腳本速度。爲什麼?

zend studiowhile...在下面的代碼行顯示assignment in condition警告,但它工作得很好,讓我看看錶瞬間。

$oDB = new db; 
print '<strong>Twitter Database Tables</strong><br />'; 
$result = $oDB->select('SHOW TABLES'); 
while ($row = mysqli_fetch_row($result)) { 
    print $row[0] . '<br />'; 
} 

但是,當我解決了這個警告,用下面的代碼是不zend studio顯示警告,但它讓我很長一段時間在有關結果和20 to 30 seconds長期的空白後的表。爲什麼?

$oDB = new db; 
print '<strong>Twitter Database Tables</strong><br />'; 
$result = $oDB->select('SHOW TABLES'); 
while (($row = mysqli_fetch_row($result)) !==FALSE) { 
    print $row[0] . '<br />'; 
} 
+0

你看到你的日誌,這些日誌的警告?如果你不是,我不會擔心它。就我而言,您可以隨時自由地完成這項任務,而不會產生影響。 –

+0

它可能與您的數據庫結構有關。你有沒有試過一個簡單的查詢應該很快,看看它是否仍然掛起?就像:'SELECT * FROM table LIMIT 1' – Alex

+0

是的它沒有在日誌中顯示任何警告。但爲什麼它減慢腳本? –

回答

5

根據the manual

mysqli_fetch_row()返回一個字符串數組,如果有在結果集中沒有更多的行對應於 提取的行或NULL。

您正在檢查BOOL響應,因此腳本繼續執行。使用!= FALSE或!== NULL。

代碼要麼是:

while (($row = mysqli_fetch_row($result)) != FALSE) { 

OR

while (($row = mysqli_fetch_row($result)) !== NULL) { 
+0

'!= FALSE'可能會工作,但它是錯誤的。 –

+0

它會工作,並不是真的錯。 http://php.net/manual/en/types.comparisons.php有比較。使用==,NULL將等同於FALSE,但不會與===。 – aynber

+0

你能告訴我如何在代碼中使用!= FALSE或!== NUULL嗎? –