Php 无限阵列对象';s迭代器

Php 无限阵列对象';s迭代器,php,arrays,iterator,Php,Arrays,Iterator,我正在对象本身内部迭代一个ArrayObject。让我们看看: class EventsBag extends ArrayObject{ public function toJson(){ $events = []; $iterator = $this->getIterator(); while ($iterator->valid()){ $events[] = $iterator->curre

我正在对象本身内部迭代一个
ArrayObject
。让我们看看:

class EventsBag extends ArrayObject{

    public function toJson(){
        $events = [];
        $iterator = $this->getIterator();

        while ($iterator->valid()){
            $events[] = $iterator->current();
            $iterator->next();
        }

        return $events;
    }
}
调用
toJson()
永远不会结束脚本执行:

$events = new EventsBag(['a', 'b']);
var_dump($events->toJson());

我已经调试了脚本,
while
控件从未退出。我不明白为什么会发生这种情况。

可能是因为
$iterator->currect
有一个打字错误。(详情请参见此处)。你好@Kenney。抄本中可能会出现打字错误,但事实并非如此。在这里可以正常工作-。这是您的实际代码,还是只是一个抽象/过滤的代码块?@Sean,我刚刚过滤了3行装饰打印一些值的代码,但这段代码没有在我的机器上运行。我看过你的,让我惊讶的是,同样的台词也适用于你。