PHP而(变量= mysql_fetch_assoc) - 解释

问题描述:

我一直在用C#工作,所以这是很奇怪,我说:PHP而(变量= mysql_fetch_assoc) - 解释

while($variable=mysql_fetch_assoc) 

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

如果是像一个普通的循环,则X,Y将与复位每一个循环,对吧?

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

+0

这只是一个$变量,每个循环都可以重置。 – 2010-05-27 07:37:33

+0

这只是一个任务。分配恰好会返回上次分配的值。 – BoltClock 2010-05-27 07:50:43

+0

在PHP(以及大多数其他脚本语言)中,变量赋值可以被认为是一个隐式函数调用,其中返回值就是您指定的值:'$ a =($ b = 7)'将赋值为'7' $ b和$ a。 – 2010-05-27 12:07:53

这意味着什么“,直到你可以mysql_fetch_assoc()从您传递给该函数的变量的元素,然后执行while循环体。

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

分配在PHP是一个返回已分配的值。如果某行被检索,那么结果将是不假的表达,这将使循环继续。

mysql_fetch_assoc()(及其相关功能)预先$result每次被调用时的内部指针。因此每次检查while条件时,$variable将被分配一个新的行数组。最后一行返回后,mysql_fetch_assoc()不能再使内部指针前进,因此下一次尝试调用它将返回false。一旦$variable成为假,条件不再满足,循环退出。

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

编辑:

如果是像一个普通的循环,则X,Y将与每一个循环复位,对不对?

是的,他们将被重新分配每个新提取的新值。

+0

此外,解决方案只是将它们从while循环中声明出来? – Petr 2010-05-27 07:39:19

+0

取决于你需要他们的东西。我无法从你的代码中知道很多。 – BoltClock 2010-05-27 07:51:32

也许看这样的代码将是有益的:

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(); 
} 

正是这种代码的只是短期形式:

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