我在许多示例中都看到了以下 while 循环条件,甚至我也多次使用过它。我知道它是如何工作的以及如何使用它。但是当我在这里编码条件时没有任何意义。
正如我看到的代码,条件就像它总是正确的。就像while(1)一样。因为对*mysql_fetch_assoc()*来说,传递的数据都是一样的。所以条件是常数。
while($arr = mysql_fetch_assoc($data))
{
//other code
}
现在,我错在哪里????
我在许多示例中都看到了以下 while 循环条件,甚至我也多次使用过它。我知道它是如何工作的以及如何使用它。但是当我在这里编码条件时没有任何意义。
正如我看到的代码,条件就像它总是正确的。就像while(1)一样。因为对*mysql_fetch_assoc()*来说,传递的数据都是一样的。所以条件是常数。
while($arr = mysql_fetch_assoc($data))
{
//other code
}
现在,我错在哪里????
每次调用都从结果集中mysql_fetch_assoc
获取下一行。如果不再有行,则返回false
并终止循环。
$data
是一种资源数据类型,可能会保留最后获取哪一行的状态。
这并不罕见,甚至数组也有一个指向当前元素的内部指针,可以使用某些数组函数对其进行操作。
从PHP 网站mysql_fetch_assoc “返回对应于获取行的字符串关联数组,如果没有更多行,则返回 FALSE。 ”
因此,只要仍有可用的行,mysql_fetch_assoc
将返回行内容的关联数组,将指针递增到下一行并while
执行循环。
当没有更多行将mysql_fetch_assoc
返回时FALSE
,循环将中断。
另请注意,从 PHP 5.5.5 开始,该函数将被弃用。