好吧,这一定是一个绝对容易的问题,我为此道歉。
如果我找不到合适的搜索条件来自己找到答案,我也会道歉。我确实尝试过,但是我在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很陌生,而且我真的希望学到的不只是解决方案。
你能给予的任何帮助都会很棒!
答案 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,日期应该显示一次。