我正在使用simplexml_load_file
从wordpress博客获取RSS Feed。这是我的代码
$rssfile = simplexml_load_file( "http://blog.sufuraamathi.com/?feed=rss2" );
$items = $rssfile->channel->item ;
foreach( $items as $item ) {
$article = array();
$article['title'] = $item->title;
$article['link'] = $item->link;
$article['category'] = $item->category;
}
foreach( $items as $item ) { ?>
<?php if($article['category']=="Uncategorized") { ?>
<div><?php echo $article['title'];?></div>
<?php
} } ;
?>
问题:它重复输出相同的帖子x次,其中x是帖子的总数。目前,Uncategorized
类别中只有两个帖子,其他类别中只有三个帖子。但代码回应如下:
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
答案 0 :(得分:0)
您的问题出在发布代码的第五行。您必须取出第一个foreach循环的数组定义:
$rssfile = simplexml_load_file( "http://blog.sufuraamathi.com/?feed=rss2" );
$items = $rssfile->channel->item ;
$article = array(); // <- put it here
foreach( $items as $item ) {
$article['title'] = $item->title;
$article['link'] = $item->link;
$article['category'] = $item->category;
}
...
因为您当前的解决方案会重置每行的$article
数组。但是为什么不在一个foreach循环中循环所有内容?如果您没有将$article
用于其他目的,我没有看到使用$item
数据分配给数组。代码可以简化:
$rssfile = simplexml_load_file( "http://blog.sufuraamathi.com/?feed=rss2" );
$items = $rssfile->channel->item ;
foreach( $items as $item ) { ?>
<?php if($item->category=="Uncategorized") { ?>
<div><?php echo $item->title;?></div>
<?php
} } ?>