RecursiveIteratorIterator::next()RecursiveIteratorIterator::nextElement()有什么区别?
文档的帮助稍小:
RecursiveIteratorIterator::next()
recursiveIteratorIterator::next-前进到下一个元素
RecursiveIteratorIterator::nextElement()
递归迭代器::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
迭代器类中的默认nextElement函数在查看spl_iterators.c:801时似乎没有做任何事情。
现在它看起来像一个no-op,因为没有办法为该函数注册自己的回调,在php源代码中,它目前什么也不做。从代码来看,如果已注册,则在迭代器向前移动到下一个元素时,在对项执行操作之前(例如foreach循环中的userland代码),将调用该回调。
如何使用请参阅@rambocoder的答案。

09-27 05:30