PHP Итератор :: ключ Страница говорит:
Return Values:
Returns scalar on success, or NULL on failure.
но для того, чтобы иметь возможность решать изнутри логики итератора, является ли текущий узел итератора действительным или нет (чтобы иметь возможность возвращать нуль или что-то еще) изнутри Iterator::key
надо позвонить Iterator::check()
, Поэтому мне кажется естественным, что большинство людей Iterator::check()
изнутри Iterator::next()
так что он может установить возвращаемое значение ‘Iterator :: key () `в null, если текущая позиция итератора неверна.
Но это приводит к Iterator::check()
вызывается дважды, когда foreach
цикл запущен. Как я могу избавиться от такой избыточности?
Для решения проблемы достаточно ввести $currentNodeChecked
логическая переменная, которую можно проверить перед вызовом Iterator::check()
,
Других решений пока нет …