PHP的foreach如何与MongoDB Cursor一起使用?

时间:2016-03-07 08:48:51

标签: php mongodb foreach

我们使用MongoDB驱动程序中的某些函数就像迭代游标一样,我们可以使用“hasNext()”和“getNext()”。但是我们也可以使用简单的PHP的foreach来迭代游标,我们不必调用上面的方法。

我的问题是如果foreach是简单的PHP函数,它如何与MongoDB一起使用?它是如何从光标中获取记录的?它在内部使用MongoDB的“cursor.forEach()”还是在内部运行“hasNext()”和“getNext()”?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

MongoCursor类实现Iterator接口。因此,foreach光标与调用$cursor->next()相同,然后检查$cursor->valid(),然后从$cursor->current()获取值(重复直到validfalse)。对于$key => $value格式,它也会获得$cursor->key()的值。

它执行一些内部运行,但它没有运行“hasNext()”,“getNext()”等。它运行在Iterator接口中抽象描述的标准方法。

抱歉我的好斗,但foreach不是“简单的PHP功能”;这是一种语言结构。我刚刚在Stack Overflow上找到了关于the difference的一个很好的解释。