0

simplexml_load_filewordpressブログから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 は投稿の総数) 繰り返し出力します。現在、このカテゴリには 2 つの投稿しかなくUncategorized、他のカテゴリにはさらに 3 つの投稿があります。ただし、コードは次のように表示されます。

<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
<div>Hello world!</div>
4

1 に答える 1

0

問題は、投稿されたコードの 5 行目にあります。最初の 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各行の配列をリセットするためです。しかし、1 つの 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 に答える