首页
学习
活动
专区
圈层
工具
发布

Usort PHP
EN

Stack Overflow用户
提问于 2015-12-03 16:58:58
回答 1查看 61关注 0票数 0

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

代码语言:javascript
复制
$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;
});

我确实喜欢这个

代码语言:javascript
复制
foreach($arr as $aTask)
{
    $data1 = $aTask->cadastro;
}

但不是按日期返回,而是返回这03/08/2015 18:22 24/11/2015 11:16 22/10/2015 17:36

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-03 18:08:40

我认为$a$bSimpleXMLElement型,$a['cadastro']$b['cadastro']null型。

因此,您正在实例化日期时间,就像这个new DateTime(null),这将与这一行相匹配:if ($ad == $bd) {和您的数组不会被排序。

也许你可以这样做:

代码语言:javascript
复制
$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;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34071859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档