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行装饰打印一些值的代码,但这段代码没有在我的机器上运行。我看过你的,让我惊讶的是,同样的台词也适用于你。