PHP while(variable = mysql_fetch_assoc) - 解释

时间:2010-05-27 06:53:57

标签: php syntax while-loop

我一直在使用C#,所以这对我来说很奇怪:

    while($variable=mysql_fetch_assoc)

{   $X=$variable['A'];
    $Y=$variable['B'];  
}

如果它像一个普通的循环,那么每个循环都会重置X,Y,对吗?

我无法在PHP手册中查找它是如何工作的。我想在每个循环中它都会前进到assoc.array的下一个元素。但这通常在PHP中被称为什么?我只是不习惯在循环条件下看到'='。

5 个答案:

答案 0 :(得分:3)

PHP中的赋值是一个表达式,它返回已分配的值。如果检索到一行,则结果将为非假,这将允许循环继续。

答案 1 :(得分:3)

mysql_fetch_assoc()(及其相关函数)每次调用时都会提前$result的内部指针。因此,每次检查$variable条件时,都会为while分配一个新的行数组。返回最后一行后,mysql_fetch_assoc()无法再推进内部指针,因此下一次调用它将返回false。一旦$variable变为假,则不再满足条件并且循环退出。

在PHP(也是JavaScript等)中,条件为真,只要它不计算为零,空字符串NULLfalse。它不必评估为布尔值。这就是为什么这样的循环有效。

修改

  

如果它像一个普通的循环,那么每个循环都会重置X,Y,对吗?

是的,它们将被重新分配来自每个新提取的行的新值。

答案 2 :(得分:2)

或许查看这样的代码会很有用:

while (($variable = mysql_fetch_assoc($result)) == true) {
  // loops until the fetch function returns false (no more rows)
  // $variable will have be an associative array containing the 'next' row from the recordset in $result
}

这是执行此操作的简便方法:

$variable = mysql_fetch_assoc();
while ($variable) {
  // loop

  $variable = mysql_fetch_assoc();
}

答案 3 :(得分:1)

它意味着“直到你可以mysql_fetch_assoc()传递给该函数的变量中的元素,然后执行while的主体。

如果它可以找到一个元素,则返回一个数组,否则为FALSE,这样就可以退出循环。

答案 4 :(得分:0)

这只是此代码的简短形式:

$variable = mysql_fetch_assoc($res);
while($variable != FALSE) {
  // do something
  $variable = mysql_fetch_assoc($res);
}