如何在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);