RecursiveIteratorIterator::next()
和 RecursiveIteratorIterator::nextElement()
有什么区别?
文档略有不足:
RecursiveIteratorIterator::next() :
RecursiveIteratorIterator::next — Move forward to the next element
RecursiveIteratorIterator::nextElement() :
RecursiveIteratorIterator::nextElement — Next element
...
Called when the next element is available.
最佳答案
从 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/