我似乎无法弄清楚这个循环在PHP中是如何工作的:
$people = array();
while($row = $result->fetch_assoc())
$people[] = $row;
好像循环会继续无限地继续前进。但是,它不是如何工作的?有人可以一步一步向我解释吗?我猜测while循环也可以这样写:
while(($row = $result->fetch_assoc()) == true)
答案 0 :(得分:3)
fetch_assoc一次获取一个结果行并将其存储在$ row中。由于这是一个循环,因此您将获取直到用完行
在循环中,您实际上是将$ row值推送到$ people数组
答案 1 :(得分:1)
fetch_assoc
将在出错时或者当fetch的光标命中所有行的末尾并且不能再获取更多行时返回false,因此它将返回false。
每次获取查询时,游标都会跟踪最后返回的行,并最终继续跟踪,直到您完成所有行的读取。
编辑:抱歉,我在考虑PDO而不是mysqli,但它应该是同样的事情。
答案 2 :(得分: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);
}
你如何看第一个选项更紧凑。