获取现有数组并按值分解

时间:2012-07-12 07:17:38

标签: php arrays html foreach simplepie

我有一个simplepie feed,它从每个加载到关联数组中的URL中吐出多个feed。

此关联数组用于使用值按字母顺序对数组进行排序。

我正在尝试使用相同的值排序并保持所有数组具有相同的URL或值,以便在foreach循环运行时,每个URL包含一个div,包含当天该URL的所有Feed < / p>

<?php

require_once('php/autoloader.php');


$feed = new SimplePie(); // Create a new instance of SimplePie
// Load the feeds
$urls = array(
  'http://abcfamily.go.com/service/feed?id=774372' => 'abc',
  'http://animal.discovery.com/news/news.rss' => 'animalplanet',
  'http://www.insideaolvideo.com/rss.xml' => 'aolvideo',
  'http://feeds.bbci.co.uk/news/world/rss.xml' => 'bbcwn',
  'http://www.bing.com' => 'bing',
  'http://www.bravotv.com' => 'bravo',
  'http://www.cartoonnetwork.com' => 'cartoonnetwork',
  'http://feeds.cbsnews.com/CBSNewsMain?format=xml' => 'cbsnews',
  'http://www.clicker.com/' => 'clicker',
  'http://feeds.feedburner.com/cnet/NnTv?tag=contentBody.1' => 'cnet',
  'http://www.comedycentral.com/' => 'comedycentral',
  'http://www.crackle.com/' => 'crackle',
  'http://www.cwtv.com/feed/episodes/xml' => 'cw',
  'http://disney.go.com/disneyxd/' => 'disneyxd',
  'http://www.engadget.com/rss.xml' => 'engadget',
  'http://syndication.eonline.com/syndication/feeds/rssfeeds/video/index.xml' => 'eonline',
  'http://sports.espn.go.com/espn/rss/news' => 'espn',
  'http://facebook.com' => 'facebook',
  'http://flickr.com/espn/rss/news' => 'flickr',
  'http://www.fxnetworks.com//home/tonight_rss.php' => 'fxnetworks',
  'http://www.hgtv.com/' => 'hgtv',
  'http://www.history.com/this-day-in-history/rss' => 'history',
  'http://rss.hulu.com/HuluRecentlyAddedVideos?format=xml' => 'hulu',
  'http://rss.imdb.com/daily/born/' => 'imdb',
  'http://www.metacafe.com/' => 'metacafe',
  'http://feeds.feedburner.com/Monkeyseecom-NewestVideos?format=xml' => 'monkeysee',
  'http://pheedo.msnbc.msn.com/id/18424824/device/rss/' => 'msnbc',
  'http://www.nationalgeographic.com/' => 'nationalgeographic',
  'http://dvd.netflix.com/NewReleasesRSS' => 'netflix',
  'http://feeds.nytimes.com/nyt/rss/HomePage' => 'newyorktimes',
  'http://www.nick.com/' => 'nickelodeon',
  'http://www.nickjr.com/' => 'nickjr',
  'http://www.pandora.com/' => 'pandora',
  'http://www.pbskids.com/' => 'pbskids',
  'http://www.photobucket.com/' => 'photobucket',
  'http://feeds.reuters.com/Reuters/worldNews' => 'reuters',
  'http://www.revision3.com/' => 'revision3',
  'http://www.tbs.com/' => 'tbs',
  'http://www.theverge.com/rss/index.xml' => 'theverge',
  'http://www.tntdrama.com/' => 'tnt',
  'http://www.tvland.com/' => 'tvland',
  'http://www.vimeo.com/' => 'vimeo',
  'http://www.vudu.com/' => 'vudu',
  'http://feeds.wired.com/wired/index?format=xml' => 'wired',
  'http://www.xfinitytv.com/' => 'xfinitytv',
  'http://www.youtube.com/topic/4qRk91tndwg/most-popular#feed' => 'youtube',
);


$feed->set_feed_url(array_keys($urls));

$feed->enable_cache(true);
$feed->set_cache_location('cache');
$feed->set_cache_duration(1800); // Set the cache time
$feed->set_item_limit(0);
$success = $feed->init(); // Initialize SimplePie
$feed->handle_content_type(); // Take care of the character encoding



?>
<?php require_once("inc/connection.php"); ?>
<?php require_once("inc/functions.php"); ?>
<?php include("inc/header.php"); ?>

<?php




// Sort it
$feed_items = array();
$items = $feed->get_items();
$urls = array_unique($urls);


foreach ($urls as $url => $image) {
  $unset = array();
  $feed_items[$url] = array();


  foreach ($items as $i => $item) {
    if ($item->get_feed()->feed_url == $url) {
      $feed_items[$url][] = $item;
      $unset[] = $i;

        }
  }


  foreach ($unset as $i) {
    unset($items[$i]);
  }
}


foreach ($feed_items as $feed_url => $items) {
  if (empty($items)) {
  ?>
    <div class="item"><a href="<?php echo $feed_url; ?>"><img src="images/boreds/<?php echo $urls[$feed_url] ?>.png"/><p>Visit <?php echo $urls[$feed_url] ?> now!</p></a></div>
  <?
    continue;
  }
  $first_item = $items[0];
  $feed = $first_item->get_feed();
  ?>

  <?php

$feedCount = 0;
  foreach ($items as $item ) {

          $feedCount++;
    ?>


      <div class="item"><strong id="amount"><?php echo $feedCount; ?></strong><a href="<?php echo $item->get_permalink(); ?>"><img src="images/boreds/<?php echo $urls[$feed_url] ?>.png"/><p><?php echo $item->get_title(); ?></p></a></div>
    <?php
  }
}


?>

<?php require("inc/footer.php"); ?>

1 个答案:

答案 0 :(得分:0)

也许你可以使用这个:

$feed = new SimplePie();
$feed->set_feed_url('http://myfirstfeed','http://mysecondfeed');

foreach( $feed->get_items() as $k => $item ) {
   echo "<div id='".$k.'">";
   echo $item->get_permalink();
   echo $title   = $item->get_title();
   echo $item->get_date('j M Y, g:i a');
   echo $item->get_content();
   echo "</div>";
}