0

我找不到这个问题的完全相同的副本,因为我的节点是数字键。

我需要按日期对这个 xml 进行排序 - 最新的优先:

[article] => Array
    (
        [0] => SimpleXMLElement Object
            (
                [value] => some value
                [date] => 2012-08-13 18:54:09
            )

        [1] => SimpleXMLElement Object
            (
                [id] => some more value
                [date] => 2012-08-09 10:24:06
            )

        [2] => SimpleXMLElement Object
            (
                [id] => another value
                [date] => 2012-08-11 20:45:44
            )
     )

我怎样才能最好地做到这一点 - 可能不将 XML 转换为 PHP 数组然后对其进行排序。

4

1 回答 1

0

从您的示例中,看起来您已经有一个对象数组,所以usort可以正常工作。

回调看起来像这样:

function compare_node_dates($a, $b)
{
    return
        strtotime((string)$b->date)
        -
        strtotime((string)$a->date);
}

但是,如果您的最外层变量实际上不是一个数组,那么如果不创建一个数组、对其进行排序并使用它来构造全新的 XML,我就无法意识到这样做。

于 2012-10-17T18:16:35.960 回答