Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中对数组中的日期进行排序?_Php_Arrays_Date - Fatal编程技术网

如何在php中对数组中的日期进行排序?

如何在php中对数组中的日期进行排序?,php,arrays,date,Php,Arrays,Date,这是我的数组,我希望按月份和日期进行排序,如 Array ( [0] => 01_January_2020 [1] => 02_December_2019 [2] => 02_January_2020 [3] => 03_December_2019 [4] => 03_January_2020 [5] => 04_December_2019 [6] => 04_January_2020 [7

这是我的数组,我希望按月份和日期进行排序,如

Array
(
    [0] => 01_January_2020
    [1] => 02_December_2019
    [2] => 02_January_2020
    [3] => 03_December_2019
    [4] => 03_January_2020
    [5] => 04_December_2019
    [6] => 04_January_2020
    [7] => 05_December_2019
    [8] => 05_January_2020
    [9] => 06_December_2019
    [10] => 06_January_2020
    [11] => 07_December_2019
    [12] => 07_January_2020
    [13] => 08_December_2019
    [14] => 08_January_2020
    [15] => 09_December_2019
    [16] => 09_January_2020
    [17] => 10_December_2019
    [18] => 10_January_2020
    [19] => 11_December_2019
    [20] => 11_January_2020
    [21] => 12_December_2019
    [22] => 12_January_2020
    [23] => 13_December_2019
    [24] => 13_January_2020
    [25] => 14_December_2019
    [26] => 14_January_2020
    [27] => 15_December_2019
    [28] => 15_January_2020
    [29] => 16_December_2019
    [30] => 16_January_2020
    [31] => 17_December_2019
    [32] => 17_January_2020
    [33] => 18_December_2019
    [34] => 18_January_2020
    [35] => 19_December_2019
    [36] => 19_January_2020
    [37] => 20_December_2019
    [38] => 20_January_2020
    [39] => 21_December_2019
    [40] => 22_December_2019
    [41] => 23_December_2019
    [42] => 24_December_2019
    [43] => 25_December_2019
    [44] => 26_December_2019
    [45] => 27_December_2019
    [46] => 28_December_2019
    [47] => 29_December_2019
    [48] => 30_December_2019
    [49] => 31_December_2019
)

我尝试了这么多方法,但没有得到任何结果。有人能帮我解决这个问题吗?

您可以使用
usort()
和一个从该格式创建datetime对象的回调来创建自己的排序函数(因为
d\u\u Y
不是一种可识别的格式,您必须使用
createFromFormat()
)。一旦你有了一个合适的datetime对象,你就可以对它们进行比较,并将它们按正确的顺序排列(通过比较时间戳,
format(“U”)
,很容易做到这一点)


$arr\u dates
是您的日期数组

usort($yourArray, function($a, $b) {
    $format = "d_F_Y";
    $a = DateTime::createFromFormat($format, $a);
    $b = DateTime::createFromFormat($format, $b);
    return $a->format("U") - $b->format("U");
});
$final_date=array();
foreach($arr_日期为$str_日期){
/*要删除下划线(41;*/
$date=str_替换(“”,“”,$str_日期);
$final_date[标准时间($date)]=$date;
}
ksort(最终日期);
回声';
打印日期(最终日期);

希望这对您有所帮助。

欢迎来到Stackoverflow。请提供您尝试过的方法,以便其他人可以改进。
usort($yourArray, function($a, $b) {
    $format = "d_F_Y";
    $a = DateTime::createFromFormat($format, $a);
    $b = DateTime::createFromFormat($format, $b);
    return $a->format("U") - $b->format("U");
});
$final_date = array();
foreach ($arr_dates as $str_date) {
    /* to remove underscore ( _ ) */
    $date = str_replace('_', ' ', $str_date); 
    $final_date[strtotime($date)] = $date;
}
ksort($final_date);
echo '<pre>';
print_r($final_date);