php - RecursiveIteratorIterator 中 next() 和 nextElement() 的区别

标签 php iterator spl

RecursiveIteratorIterator::next()RecursiveIteratorIterator::nextElement() 有什么区别?

文档略有不足:

最佳答案

从 PHP 源代码来看,nextElement 似乎是一个回调函数,可以在“下一个元素可用时”调用。

288  if (object->nextElement && (object->mode == RIT_SELF_FIRST || object->mode == RIT_CHILD_FIRST)) {
289      zend_call_method_with_0_params(&zthis, object->ce, &object->nextElement, "nextelement", NULL);
290  }

Source .

从查看 spl_iterators.c:801 来看,迭代器类中的默认 nextElement 函数目前似乎没有做任何事情。 .

现在它看起来像是一个空操作,因为没有办法为该函数注册您自己的回调,并且在 PHP 源代码中,它目前什么都不做。 从代码来看,如果注册后,当迭代器向前移动到下一个元素时,在对项目执行操作之前调用该回调(例如,foreach 循环中的用户态代码)。

有关如何使用它的说明,请参阅@RamboCoder 的回答。

关于php - RecursiveIteratorIterator 中 next() 和 nextElement() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833769/

相关文章:

javascript - 验证下拉选项(菜单)

php - 如何确定 FastCGI 是否被用于运行 php 脚本

PHP/MySQL 搜索查询返回空白表单

php - 使用 PHP - SPL 解决方案反向遍历数组?

php - 如何加载php文件以仅显示文件内容而不执行它?

c++ - 间歇性 "Vector iterator not dereferencable"

C++容器/迭代器依赖问题

php - 为什么这里使用clone关键字

php - 我们如何让编码人员在编写自己的函数之前查找现有函数?

rust - Rust-多次调用迭代器方法