【问题标题】:removed foreach item doesn't keep count correctly删除的 foreach 项目无法正确计数
【发布时间】:2015-04-07 00:07:39
【问题描述】:
<ul>
    <?php foreach (array_slice($items, 0, 3) as $item): ?>
        <?php if (!isset($item->story)): ?> <!-- hide story updates -->
          <li>
            <?php if (isset($item->message)) echo $item->message; ?>
          </li>
        <?php endif; ?>
    <?php endforeach; ?>
</ul>

我正在显示新闻提要,并且只想显示没有故事更新的项目。所以我使用 !isset 检查故事项目是否存在,如果存在则隐藏该项目。

这很好用,但现在我试图在提要中显示 3 个结果,但我认为故事项目仍在 foreach 中计数,因此当最后 3 个更新是故事项目时,提要中没有任何显示。

我已经阅读了this question,这看起来像是我正在尝试做的事情,但我不明白他从哪里得到 $elementkey 变量,它是做什么的?

如何从 foreach 中删除项目,并删除其计数以便显示 3 个项目?

【问题讨论】:

  • 请向我们展示您尝试实施 3 个帖子限制的代码
  • 它在一个drupal .module 文件中的一个函数中控制,但同样可以使用我刚刚添加到问题中的array_slice 来完成
  • 还有..你为什么认为它们不会被计算在内?..
  • 当最后3个item没有story时显示3个结果,但是当一个story在foreach中时,只显示2个item,或者没有item显示
  • @Collins,当然......这是预期的行为......你不是有条件地切片 $items 数组......所以你循环通过三个项目......可能包含也可能不包含故事

标签: php foreach


【解决方案1】:

这应该适合你:

(在这里我刚刚添加了一个$count 变量,只有在发布消息时才会增加该变量。在 3 之后我打破了 foreach)

<ul>
<?php $count = 0;
        foreach ($items as $item): ?>
    <?php if ($count >= 3) break; if (!isset($item->story)): ?> <!-- hide story updates -->
      <li>
        <?php if (isset($item->message)) {
                echo $item->message;
                $count++;
              }
        ?>
      </li>
    <?php endif; ?>
<?php endforeach; ?>
</ul>

【讨论】:

  • 是的!完美的!非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2010-11-02
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
相关资源
最近更新 更多