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()
之前对其进行检查。