按日期使用PHP对多维XML进行排序

时间:2012-08-13 18:20:02

标签: php xml sorting simplexml

我找不到这个问题的完全重复,因为我的节点是数字键。

我需要按日期排序这个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数组并对其进行排序。

1 个答案:

答案 0 :(得分:0)

从您的示例中,看起来您已经拥有了一系列对象,因此usort可以正常工作。

回调看起来像这样:

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

但是,如果你的最外面的变量实际上不是一个数组,那么我没有办法在没有创建数组的情况下做到这一点,对它进行排序,并使用它来构建全新的XML。