使用RecursiveIteratorIterator列表中的第一个和最后一个元素

时间:2010-12-27 17:05:17

标签: php zend-framework recursion iterator spl

我正在使用RecursiveIteratorIterator循环Zend_Navigation,这基本上是嵌套<ul><li>代码的列表:

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

如何确定当前迭代的元素($page)是当前级别的第一个还是最后一个元素?
我需要为这些元素添加firstlast类属性。

1 个答案:

答案 0 :(得分:1)

您可以使用getDepth()来查询代码的深度。当深度增加时,您处于新的水平,并应添加first属性。当标记之间的深度减小时,它会告诉您上一个标记是其级别中的最后一个标记,您应该为其添加last属性。这意味着在完成当前标记的处理之前,您必须阅读下一个标记。