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的答案。