Php 对0上带有月份或天数的日期进行排序

Php 对0上带有月份或天数的日期进行排序,php,sorting,date,datetime,Php,Sorting,Date,Datetime,我必须在PHP上对一些日期进行排序,其中一些日期的月份或日期可以为“0”,例如: 1951-11-00 1951-12-14 问题是,此日期不能与具有所有年、日和月值的其他日期排序 首先,我尝试使用array\u multisort: foreach ($Objects as $key => $part) { $sort[$key] = strtotime($part['Object']['date']); } array_multisort($so

我必须在PHP上对一些日期进行排序,其中一些日期的月份或日期可以为“0”,例如:

1951-11-00

1951-12-14

问题是,此日期不能与具有所有年、日和月值的其他日期排序

首先,我尝试使用array\u multisort:

    foreach ($Objects as $key => $part) {
        $sort[$key] = strtotime($part['Object']['date']);
    }
    array_multisort($sort, SORT_DESC, $Objects );
它可以对其进行排序,但它首先对月份或日期上有00的值进行排序,然后对正常日期进行排序,例如:

1937-05-00

1937-04-00

1935-11-00

1951-12-16

1951-12-14

正如您所看到的,顺序是不正确的,因为1951年的日期应该排在第一位,但是排序算法将日期分为两组,一组是00,另一组是完整的数字

然后我尝试了uasort,但是没有得到好的结果

如何正确地对这些日期进行排序?对于我放置的列表,我需要它显示在此订单上(无论当月是00):

1951-12-16

1951-12-14

1937-05-00

1937-04-00


1935-11-00

只需将它们按字符串排序即可。当作为字符串进行比较时,它们已经具有可比较的格式

$dates = [
    '1937-05-00',
    '1937-04-00',
    '1935-11-00',
    '1951-12-16',
    '1951-12-14'
];

usort($dates, function($a, $b) {
    return $a < $b;
});

var_export($dates);
$dates=[
'1937-05-00',
'1937-04-00',
'1935-11-00',
'1951-12-16',
'1951-12-14'
];
usort($dates,function($a,$b){
返回$a<$b;
});
var_出口(日期);