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


How to get rid of double call to Iterator::check()?

PHP Iterator::key页面显示:

Return Values:
Returns scalar on success, or NULL on failure.

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

但这导致在运行foreach循环时Iterator::check()被调用两次。我该如何摆脱这种冗余?

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