環路我似乎無法找出這個循環在PHP中是如何工作的:雖然與賦值運算符
$people = array();
while($row = $result->fetch_assoc())
$people[] = $row;
它好像循環只想繼續前進,無限。但是,它不是如何工作?有人可以一步一步向我解釋嗎?我猜測,while循環也可以寫成這樣:
while(($row = $result->fetch_assoc()) == true)
環路我似乎無法找出這個循環在PHP中是如何工作的:雖然與賦值運算符
$people = array();
while($row = $result->fetch_assoc())
$people[] = $row;
它好像循環只想繼續前進,無限。但是,它不是如何工作?有人可以一步一步向我解釋嗎?我猜測,while循環也可以寫成這樣:
while(($row = $result->fetch_assoc()) == true)
的FETCH_ASSOC在$行時間,並將其存儲讀取一行結果。由於這是一個循環,你取,直到你用完行
在循環你基本上是推$行價值爲$人陣的
fetch_assoc
將返回false或者在錯誤或當用於獲取的遊標將觸及所有行的末尾,並且不會獲取更多行,因此它將返回false。
每次您提取查詢時,光標都會跟蹤上次返回的行,並會繼續保持跟蹤,直到您完成讀取所有行。
編輯:對不起,我在想PDO,而不是mysqli,但它應該是大約相同的事情。
您的代碼:
$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);
}
你怎能看到第一個選項是更緊湊。
你不需要指定一個行的名字:'$ row = fetch_assoc()['my_row']' – 735Tesla
@ 735Tesla通常我會的,但我不會在這個場合,我需要寫所有的行到一個數組。 –
所以變量'$ row'實際上並不是指單行? – 735Tesla