我一直在使用C#,所以这对我来说很奇怪:
while($variable=mysql_fetch_assoc)
{ $X=$variable['A'];
$Y=$variable['B'];
}
如果它像一个普通的循环,那么每个循环都会重置X,Y,对吗?
我无法在PHP手册中查找它是如何工作的。我想在每个循环中它都会前进到assoc.array的下一个元素。但这通常在PHP中被称为什么?我只是不习惯在循环条件下看到'='。
答案 0 :(得分:3)
PHP中的赋值是一个表达式,它返回已分配的值。如果检索到一行,则结果将为非假,这将允许循环继续。
答案 1 :(得分:3)
mysql_fetch_assoc()
(及其相关函数)每次调用时都会提前$result
的内部指针。因此,每次检查$variable
条件时,都会为while
分配一个新的行数组。返回最后一行后,mysql_fetch_assoc()
无法再推进内部指针,因此下一次调用它将返回false
。一旦$variable
变为假,则不再满足条件并且循环退出。
在PHP(也是JavaScript等)中,条件为真,只要它不计算为零,空字符串NULL
或false
。它不必评估为布尔值。这就是为什么这样的循环有效。
修改强>
如果它像一个普通的循环,那么每个循环都会重置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);
}