I have started to use the simplexml function that seems to work out better than the previous other parser that I have tried to use. I have got to the stage where I need to the sort the items by transmissiondate - I tried using the uasort but does not make any changes the order of the items.
also some times a programme is on more than once on the same day - would it be easier to sortby videoID can any help?
this what the object looks like:
[0] => SimpleXMLElement Object
(
[VideoID] => 108059
[Genre] => Music
[ProgrammeName] => MTV
[OriginalAiringDate] => 2009-11-10T19:22:24
[TransmissionDate] => 2009-11-10T19:22:24
)
[1] => SimpleXMLElement Object
(
[VideoID] => 108395
[ExpiryDate] => 2009-12-12T23:59:59
[DateCreated] => 2009-11-12T13:28:54
[Genre] => Music
[ProgrammeName] => MTV
[OriginalAiringDate] => 2009-11-12T19:22:32
[TransmissionDate] => 2009-11-12T19:22:32
)
$xml = simplexml_load_file("data.xml");
$count = 0;
$sortItem = 0;
$dateformat = "D j M, g:ia";
$sortArray = array();
foreach($xml->CatchUp as $item){
$sortArray[$count][TransmissionDate] = $item;
if($count < 4){
print "<p>Programme Name:<strong> " . $item->ProgrammeName. "</strong></p>";
print "<p>Date Shown:<strong> " . date($dateformat, strtotime($item->TransmissionDate)). "</strong></p>";
print "<p>Description:<strong> " . trunc($item->ShortSynopsis,30, " ")."</strong></p>";
print "<p><a href='". $item->VideoID. "'>". $item->VideoID."</a></p>";
$count++;
}
}
}
asort($sortArray);
try to use casting when pulling data from your SimpleXMLElement Object
using video id:
$sortArray[$count][VideoID] = (int)$item;
I see two ways of doing that. The first would be to create an array containing the
TransmissionDate
values, then another array containing the corresponding nodes, then usearray_multisort()
. This is a bit tedious, so here's what I'd do instead: download SimpleDOM and usesortedXPath()