我们从 MongoDB 驱动程序中使用某些函数,例如迭代游标,我们可以使用“hasNext()”和“getNext()”。但我们也可以使用简单的 PHP 的 foreach 来迭代游标,而不必调用上述方法。
我的问题是,如果 foreach 是简单的 PHP 函数,它如何与 MongoDB 一起工作?它如何从游标中获取记录?它在内部使用 MongoDB 的“cursor.forEach()”还是在内部运行“hasNext()”和“getNext()”?
任何帮助将不胜感激。
最佳答案
MongoCursor类实现Iterator
接口(interface)。因此,foreach
光标与调用$cursor->next()
,然后检查$cursor->valid()
是一样的> 然后从 $cursor->current()
获取值(重复直到 valid
为 false
)。对于 $key => $value
格式,它还会获取 $cursor->key()
的值。
它执行一些内部运行,但不运行“hasNext()”、“getNext()”等。它运行 Iterator
接口(interface)中抽象描述的标准方法。
抱歉我的挑剔,但是 foreach
不是“简单的 PHP 函数”;它是一种语言构造。我刚刚找到了关于 the difference 的很好的解释在 Stack Overflow 上。
关于php - PHP 的 foreach 如何与 MongoDB Cursor 配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35839500/