0

好吧,这一定是一个绝对简单的问题,对此我深表歉意。

如果我只是未能找到正确的搜索词来自己找到答案,我也深表歉意。我确实尝试过,但我对 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 还很陌生,我真的很想学习更多,而不仅仅是给出一个解决方案。

您能提供的任何帮助都会很棒!

4

2 回答 2

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>';
    }
    ...
}

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

于 2009-10-03T07:55:21.707 回答
0

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

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

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

你能澄清一下格式吗?因为目前应该为每个有效的 $i 显示一次日期。

于 2009-10-03T07:53:45.513 回答