我正在尝试按日期排序我的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
答案 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;
});