while循环与赋值运算符

时间:2014-01-09 02:33:10

标签: php while-loop operators

我似乎无法弄清楚这个循环在PHP中是如何工作的:

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

好像循环会继续无限地继续前进。但是,它不是如何工作的?有人可以一步一步向我解释吗?我猜测while循环也可以这样写:

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

3 个答案:

答案 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);
}

你如何看第一个选项更紧凑。