在SimpleXML上使用usort,它已被转换为数组

时间:2017-08-26 12:30:24

标签: php simplexml usort

我已经在SimpleXML中读取了一个标准的RSS提要,并在转换为数组后获得以下内容:

[0] => SimpleXMLElement Object ( 
    [guid] => https://www.zazzle.com/scissors_by_any_other_name_dreadful_pun_t_shirt-235586301981812394
    [pubDate] => Wed, 23 Aug 2017 13:41:08 GMT 
    [title] => SimpleXMLElement Object ( ) 
    [link] => https://www.zazzle.com/scissors_by_any_other_name_dreadful_pun_t_shirt-235586301981812394
    [author] => HightonRidley 
    [description] => SimpleXMLElement Object ( ) 
    [price] => $30.15 
    ) 
[1] => SimpleXMLElement Object ( 
    [guid] => {not enough reputation points to show link} 
    [pubDate] => Sat, 19 Aug 2017 15:53:19 GMT 
    [title] => SimpleXMLElement Object ( ) 
    [link] => {not enough reputation points to show link} 
    [author] => HightonRidley 
    [description] => SimpleXMLElement Object ( ) 
    [price] => $15.65 ) 
)

这是用于创建和显示上述

的代码
$sortable = array();
foreach($product_grid->channel->item as $node) {
    $sortable[] = $node;
}
print_r($sortable);

为了向自己证明它的工作和可访问性,我使用了这个

foreach ($sortable as $rssitem) {
    echo "<br>" . $rssitem->pubDate;
}

echo "<br>".$sortable[0]->pubDate;
echo "<br>".$sortable[1]->pubDate;

并获得此输出

Wed, 23 Aug 2017 13:41:08 GMT
Sat, 19 Aug 2017 15:53:19 GMT
Wed, 23 Aug 2017 13:41:08 GMT
Sat, 19 Aug 2017 15:53:19 GMT

...但是当我尝试使用usort排序时,我没有输出,Firefox控制台告诉我服务器错误500 以下是我使用usort

的方法
usort($sortable, function($a, $b)
{
    return strtotime($a->pubDate) > strtotime($b->pubDate);
});

我已经在这里检查了各种问题/答案以及我在网上找到的其他许多地方,但无济于事。 有人可以告诉我如何从匿名函数中引用$ sortable的各种元素。一旦我将第一个元素破解,我将使用其他元素进行其他排序。 谢谢!

0 个答案:

没有答案