2014-01-09 112 views
0

環路我似乎無法找出這個循環在PHP中是如何工作的:雖然與賦值運算符

$people = array(); 
while($row = $result->fetch_assoc()) 
    $people[] = $row; 

它好像循環只想繼續前進,無限。但是,它不是如何工作?有人可以一步一步向我解釋嗎?我猜測,while循環也可以寫成這樣:

while(($row = $result->fetch_assoc()) == true) 
+0

你不需要指定一個行的名字:'$ row = fetch_assoc()['my_row']' – 735Tesla

+0

@ 735Tesla通常我會的,但我不會在這個場合,我需要寫所有的行到一個數組。 –

+0

所以變量'$ row'實際上並不是指單行? – 735Tesla

回答

3

的FETCH_ASSOC在$行時間,並將其存儲讀取一行結果。由於這是一個循環,你取,直到你用完行

在循環你基本上是推$行價值爲$人陣的

1

fetch_assoc將返回false或者在錯誤或當用於獲取的遊標將觸及所有行的末尾,並且不會獲取更多行,因此它將返回false。

每次您提取查詢時,光標都會跟蹤上次返回的行,並會繼續保持跟蹤,直到您完成讀取所有行。

編輯:對不起,我在想PDO,而不是mysqli,但它應該是大約相同的事情。

1

您的代碼:

$people = array(); 
while($row = $result->fetch_assoc()) 
    $people[] = $row; 

例子,說明其作品(MySQL):

$people = array(); 
$result = mysql_query($query); 
$rows_count = mysql_num_rows($result); 
for ($i = $rows_count - 1; $i >= 0; $i--) { 
    mysql_data_seek($result, $i); 
    $people[] = mysql_fetch_assoc($result); 
} 

你怎能看到第一個選項是更緊湊。