仅显示每个日期一次

时间:2009-10-03 07:46:35

标签: php codeigniter simplepie

好吧,这一定是一个绝对容易的问题,我为此道歉。

如果我找不到合适的搜索条件来自己找到答案,我也会道歉。我确实尝试过,但是我在PHP方面缺乏流畅性让我很难找到。

我正在寻找一种在foreach循环中只显示一次日期的简单方法。我循环遍历这样的数据:

<?php
  echo "<ul>";
  foreach($rss_items as $i){
   if($i->get_feed()->get_title() == 'Twitter (no @ replies)'){
   echo "<li>";
   echo $i->get_date();
   echo "<a href='" .$i->get_link()."'>Twitter</a>";
   echo $i->get_title();
   echo "</li>";
   }
   elseif($i->get_feed()->get_title() == 'Pinboard (jpcody)'){
   echo "<li>";
   echo $i->get_date();
   echo "<a href='" .$i->get_link()."'>Pinboard</a>";
   echo $i->get_title();
   echo "</li>";
   }
   elseif($i->get_feed()->get_title() == 'Entries at Church Marketing Sucks by Joshua Cody'){
   echo "<li>";
   echo $i->get_date();
   echo "<a href='" .$i->get_link()."'>Church Marketing Sucks</a>";
   echo "<a href='" .$i->get_link()."'>" . $i->get_title() . "</a>";
   echo $i->get_description();
   echo "</li>";
   }
   elseif($i->get_feed()->get_title() == 'Flickr remove first paragraph'){
   echo "<li>";
   echo $i->get_date();
   echo "<a href='" .$i->get_link()."'>Flickr</a>";
   echo "<a href='" .$i->get_link()."'>" . $i->get_title() . "</a>";
   echo $i->get_description();
   echo "</li>";
   }
  }
  echo "</ul>";
 ?>

每个项目都包含日期,所以我多次获得相同的日期。我希望每个日期只显示一次,即http://daringfireball.net

我正在使用CodeIgniter和SimplePie库,因此所有数据都是直接提取的,而不是存储在数据库中。我想一种方法可以包括第二个if语句来检查日期是否已被使用,但我不知道如何执行它。

我对PHP很陌生,而且我真的希望学到的不只是解决方案。

你能给予的任何帮助都会很棒!

2 个答案:

答案 0 :(得分:3)

您需要记住上次使用的日期,并且只有在不同时才打印。您可以尝试以下方式:

$previous_date = null;
foreach ($rss_items as $item) {
    if ($item->get_date() != $previous_date) {
        $previous_date = $item->get_date();
        echo '<li>' . $previous_date . '</li>';
    }
    ...
}

(不要忘记使用htmlspecialchars对标题和链接进行HTML编码。)

答案 1 :(得分:0)

你的意思是你只希望日期在循环之前显示一次,或者每循环显示一次,以便它看起来像:

日期1
- 第1项 - 项目2
- 等......
日期2
- 第1项 - 项目2
- 等等......

你能澄清一下格式吗?因此,对于每个有效的$ i,日期应该显示一次。