4

我最近一直在使用相当多的 PHP,虽然我通常觉得它很有趣而且相当轻松,但我担心我可能会偶然发现很多人似乎讨厌它的怪癖之一。

考虑一下:

while($row = mysql_fetch_array($result))
{
    //Do something with $row...
}

...其中 $result 是一个 mysql_query ,例如:

从人中选择姓名、年龄

每次循环执行时,$row 都会引用返回结果中的不同行。

我从来不知道 while(... 语句在它检查的条件为真时执行除执行之外的任何操作的语言,而且我可以看到上面的内容如何做同样的事情......但我看不出一个while 循环导致它遍历获取的数组的索引。

这仅仅是 PHP 的一个奇怪的怪癖,还是 mysql_fetch_array 返回的对象每次被引用时都会增加/拼接自己?

我了解它是如何工作的,所以我可以在我的代码中使用它,但我不明白为什么而且我不喜欢死记硬背 - 如果有人能解释一下,我将非常感激。

4

1 回答 1

3

mysql_fetch_array 每次被引用时都会增加/拼接自身返回的对象

你是对的。出于某种原因,在此特定功能的手册参考中没有这样说,但让我们看一下非常相似的参考mysql_fetch_row http://www.php.net/manual/en/function.mysql-fetch-行.php

引用参考:

返回对应于获取的行的数值数组,并将内部数据指针向前移动。

内部数据指针向前移动后,再次调用该函数将获取下一行。这种行为与自身无关while。您还可以在连续的行中多次调用该函数。

这种行为其实很常见。考虑从 API 类似于fread. 每次阅读时,您都会收到下一个数据块。这也是使用内部数据指针实现的,也称为游标。

于 2013-02-05T01:31:40.587 回答