PHP 的 foreach 如何与 MongoDB 游标配合使用?
Posted
技术标签:
【中文标题】PHP 的 foreach 如何与 MongoDB 游标配合使用?【英文标题】:How foreach of PHP works with MongoDB Cursor? 【发布时间】:2016-06-20 18:04:18 【问题描述】:我们从 MongoDB 驱动程序中使用了某些函数,例如迭代游标,我们可以使用“hasNext()”和“getNext()”。但是我们也可以使用简单的 php 的 foreach 来迭代游标,而不必调用上述方法。
我的问题是,如果 foreach 是简单的 PHP 函数,它如何与 MongoDB 一起工作?它如何从 cursor 中获取记录?它是在内部使用 MongoDB 的“cursor.forEach()”还是在内部运行“hasNext()”和“getNext()”?
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:MongoCursor 类实现了Iterator
接口。所以,foreach
光标,与调用 $cursor->next()
,然后检查 $cursor->valid()
,然后从 $cursor->current()
获取值是一样的(重复直到 valid
是 false
)。对于$key => $value
格式,它的值也为$cursor->key()
。
它做了一些内部运行,但没有运行“hasNext()”、“getNext()”等。它运行Iterator
接口中抽象描述的标准方法。
对不起,我的挑剔,但 foreach
不是“简单的 PHP 函数”;这是一种语言结构。我刚刚在 Stack Overflow 上找到了关于 the difference 的很好的解释。
【讨论】:
以上是关于PHP 的 foreach 如何与 MongoDB 游标配合使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?
如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?
使用PHP与2个foreach循环中的数组进行比较时如何获取迭代次数