如何摆脱对Iterator :: check()的双重调用?

时间:2015-02-05 12:11:59

标签: php iterator duplication

PHP Iterator::key页面说:

Return Values:

Returns scalar on success, or NULL on failure.

但是为了能够从迭代器逻辑中决定当前迭代器节点是否有效(以便能够返回null或其他内容)来自Iterator::key,必须调用{ {1}}。因此,我很自然地认为大多数人会在Iterator::check()内调用Iterator::check(),这样如果当前迭代器位置无效,它就可以将'Iterator :: key()`的返回值设置为null

但是当运行Iterator::next()循环时,这会导致Iterator::check()被调用两次。我怎样才能摆脱这种冗余?

1 个答案:

答案 0 :(得分:0)

要解决这个问题,引入一个$currentNodeChecked布尔变量就足够了,可以在调用Iterator::check()之前检查它。