Usort Date Xml PHP

时间:2015-12-03 16:58:58

标签: php arrays xml sorting date

我正在尝试按日期排序我的XML,但代码不能正常工作。 这是我的代码

$xml = simplexml_load_file ('http://xml.dsautoestoque.com/?l=09086369000133');
$arr=array();
foreach($xml->veiculo as $aTask)
{
    $arr[]=$aTask;

}

usort($arr, function($a, $b) {
  $ad = new DateTime($a['cadastro']);
  $bd = new DateTime($b['cadastro']);

  if ($ad == $bd) {
    return 0;
  }

  return $ad > $bd ? 1 : -1;
});

我确实喜欢这个

foreach($arr as $aTask)
{
    $data1 = $aTask->cadastro;
}

但是没有按日期返回,它正在返回 03/08/2015 18:22 24/11/2015 11:16 22/10/2015 17:36

1 个答案:

答案 0 :(得分:0)

我认为$a$b的类型为SimpleXMLElement$a['cadastro']$b['cadastro']null

所以你实例化你的DateTime就像这个new DateTime(null)一样,它会匹配这一行:if ($ad == $bd) {并且你的数组不会被排序。

也许你可以这样做:

$xml = simplexml_load_file ('http://xml.dsautoestoque.com/?l=09086369000133');

$arr = array();
foreach ($xml->veiculo as $aTask) {
    $arr[] = $aTask;

}

usort($arr, function ($a, $b) {
    $ad = DateTime::createFromFormat('d/m/Y H:i', $a->cadastro->__toString());
    $bd = DateTime::createFromFormat('d/m/Y H:i', $b->cadastro->__toString());

    if ($ad == $bd) {
        return 0;
    }

    return $ad > $bd ? 1 : -1;
});