2014-03-03 112 views
0

我使用教程創建我的第一個PHP站點以供參考。我無法理解爲什麼以下工作原理:PHP while循環。爲什麼這個工作?

while ($row = mysql_fetch_array($result)){ 
    echo $row[1]. " ".row[2]."<br/>"; 
} 

具體來說,循環如何遞增到下一行?

更新: 感謝所有爲我提供答案的人,包括那些懇求我加入RTM的人。我的問題不是理解循環如何工作,而是簡單地看不到循環如何遞增。 答案: 從PHP文檔,

mysql_fetch_array:返回對應於所提取的行並移動內部數據指針超前

我現在看到的陣列,一切都很好。

+1

閱讀其文檔。 –

+0

順便說一句請使用「mysqli_fetch_array」具體是mysqli。 – les

+0

與c一樣,函數mysql_fetch_array按順序從表中抓取一行,如佔位符,並在到達結尾時返回0或false。這個值被賦值給行,但是它也被if語句讀取 –

回答

2

您可以重寫代碼,這相當於:

$row = mysql_fetch_array($result); // fetch and advance 
while ($row !== false) { // compare result against false 
    echo $row[1]. " ".row[2]."<br/>"; 
    $row = mysql_fetch_array($result); // fetch and advance 
} 

的分配產生,然後可以在條件中使用的值,雖然這是一個很好的做法,把括號中的分配辦法:

// fetch and advance, compare fetched result against false 
while (($row = mysql_fetch_array($result)) !== false) { 
    echo $row[1]. " ".row[2]."<br/>"; 
} 
+0

還有一種更好的做法,即不將任務分配到條件表達式中。 – ragol

+0

@ragol - 我只是爲了我自己的知識而問,爲什麼不把一個任務放到條件子句中是不是更好的做法?我在許多開源代碼中看到過這種模式(特別是在mail()調用中)。它出什麼問題了 ? –

+0

@ragol這不完全是通用的,它取決於你希望遵循哪種代碼約定。 –

0

的mysql_fetch_array採取$第一個元素結果,那麼爲$結果有元素這項工作......就像是拿卡從甲板

0

取讀ŧ hough PHP While文檔。瞭解mysql_fetch_array()的功能以及它的工作原理可能也很有用。讀完後,不要再使用mysql_*函數,因爲它們已被棄用。相反,請使用mysqli_*PDO

1

mysql_fetch_array()將獲取一個$結果並以$ array的形式保存到$ row中。使用while循環,您的程序將從頭到尾循環數組中的數據。

順便問一下,你的代碼應該像

while ($row = mysql_fetch_array($result)){ 
    echo $row['someData1']. " ".row['someData2']."<br/>"; 
} 

如果你想通過指數迭代,那麼代碼看起來像以下,但它將打印字陣,你將打印結果「那「具體指數。

$indexCounter = 0; 
while ($row = mysql_fetch_array($result)){ 
    echo $row[$indexCounter]."<br/>"; 
} 

希望這會有所幫助!謝謝。