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

发布于 2024-10-09 07:48:05 字数 503 浏览 2 评论 0原文

我使用 RecursiveIteratorIterator 来循环 Zend_Navigation,它基本上是一个嵌套

  • 的列表。 标签:

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

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

I'm using RecursiveIteratorIterator to loop over Zend_Navigation, which is basically a list of nested <ul> and <li> tags:

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

How to determine, whether the currently iterated element ($page) is first or last element on current level?
I need to add first and last class attribute to those elements.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夕嗳→ 2024-10-16 07:48:05

您可以使用 getDepth() 查询标签的深度。当深度增加时,您就处于一个新的级别,应该添加 first 属性。当标签之间的深度减小时,这表明前一个标签是其级别中的最后一个标签,您应该为其添加一个 last 属性。这意味着您必须先读取下一个标签,然后才能完成当前标签的处理。

You could use getDepth() to query the depth of the tag. When the depth increases, you're at a new level and should add a first attribute. When the depth decreases between tags, that tells you the previous tag was the last in its level and you should add a last attribute to it. This means you will have to read the next tag before you can finish processing the current tag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文