0

simplexml_load_file用来从 wordpress 博客获取 rss 提要。这是我的代码

$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>
4

1 回答 1

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
} } ?>
于 2013-01-07T05:24:06.987 回答