Как отсортировать фид XML с помощью PHP - PullRequest
0 голосов
/ 19 ноября 2009

Я новичок в этом разборе XML-каналов; поэтому у меня есть кусок кода, над которым я работал, который извлекает данные из файла XML. Теперь я хочу иметь возможность сортировать массив по дате публикации pubdate. Я не нашел примеров, которые могли бы мне помочь.

Я использовал sort (), который помещает его в случайный порядок.

$xml_headline_key = "*ARRAY*CATCHUP*PROGRAMMENAME";
$xml_link_key = "*ARRAY*CATCHUP*ITEMURL";
$xml_description_key = "*ARRAY*CATCHUP*SHORTSYNOPSIS";
$xml_publish_key = "*ARRAY*CATCHUP*ORIGINALAIRINGDATE";
$story_array = array();
$counter = 0;
class xml_story{
 var $headline, $description, $link, $pubdate;
}
function contents($parser, $data){
 global $current_tag, $xml_headline_key, $xml_link_key, $xml_description_key, $counter, $story_array, $xml_link_key, $xml_publish_key;
 switch($current_tag){
  case $xml_headline_key:
   $story_array[$counter] = new xml_story();
   $story_array[$counter]->headline = $data;
   break;
  case $xml_link_key:
   $story_array[$counter]->link = $data;
  break;
  case $xml_description_key:
   $story_array[$counter]->description = $data;
   $counter++;
   break;
  case $xml_publish_key:
   $story_array[$counter]->pubdate = $data;
  break;
  }
}

$corrie_counter = 0;
sort($story_array);
$dateformat = "D j M, g:ia";

for($x=0;$x<count($story_array);$x++){
 if($story_array[$x]->headline == "Coronation Street"){
 if($corrie_counter != 4){
 echo "<li><span class=\"bold\">". date($dateformat, strtotime($story_array[$x]->pubdate)) . "</span>\n";
echo "\t<span class=\"text\">" . trunc($story_array[$x]->description,30, " ") . "</span>\n";

echo "\ t "; $ Corrie_counter ++; } } }

1 Ответ

2 голосов
/ 19 ноября 2009

Вы можете использовать uasort , а внутри sortByPubdate определить способ сравнения двух pubdates .

uasort($story_array, 'sortByPubdate');
// Sort function
function sortByPubdate($a, $b) {
    if ($a->pubdate == $b->pubdate) {
        return 0;
    }
    return ($a->pubdate < $b->pubdate) ? -1 : 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...