Первый и последний элементы в списке с использованием RecursiveIteratorIterator - PullRequest
1 голос
/ 27 декабря 2010

Я использую RecursiveIteratorIterator, чтобы зациклить Zend_Navigation, который в основном представляет собой список вложенных тегов <ul> и <li>:

$iterator = new RecursiveIteratorIterator(
    $container, 
    RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($iterator as $page) {
    ...
    // isLast()?
    // isFirst()?
}

Как определить, повторяется ли текущая итерацияэлемент ($page) является первым или последним элементом на текущем уровне?
Мне нужно добавить атрибуты класса first и last к этим элементам.

1 Ответ

1 голос
/ 27 декабря 2010

Вы можете использовать getDepth () для запроса глубины тега. Когда глубина увеличивается, вы находитесь на новом уровне и должны добавить атрибут first. Когда глубина между тегами уменьшается, это говорит о том, что предыдущий тег был последним по уровню, и вы должны добавить к нему атрибут last. Это означает, что вам придется прочитать следующий тег, прежде чем вы сможете завершить обработку текущего тега.

...