Как избавиться от двойного вызова Iterator :: check ()?

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 цикл запущен. Как я могу избавиться от такой избыточности?

0

Решение

Для решения проблемы достаточно ввести $currentNodeChecked логическая переменная, которую можно проверить перед вызовом Iterator::check(),

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]