Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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_Using - Fatal编程技术网

如何使用php按日期顺序对日期数组排序

如何使用php按日期顺序对日期数组排序,php,arrays,date,using,Php,Arrays,Date,Using,这是我试图按日期排序的数组 Array ( [0] => 2013 Aug 01 [1] => 2013 Aug 02 [2] => 2013 Aug 05 [3] => 2013 Aug 06 [4] => 2013 Aug 07 [5] => 2013 Aug 08 [6] => 2013 Aug 09 [7] => 2013 Jul 11 [8] => 2013 Jul

这是我试图按日期排序的数组

Array ( 
   [0] => 2013 Aug 01 
   [1] => 2013 Aug 02 
   [2] => 2013 Aug 05 
   [3] => 2013 Aug 06 
   [4] => 2013 Aug 07 
   [5] => 2013 Aug 08 
   [6] => 2013 Aug 09
   [7] => 2013 Jul 11
   [8] => 2013 Jul 12
   [9] => 2013 Aug 12 
   [10] => 2013 Aug 13 
   [11] => 2013 Aug 14
   [12] => 2013 Jul 15 
   [13] => 2013 Aug 15 
   [14] => 2013 Jul 16 
   [15] => 2013 Jul 17 
   [16] => 2013 Jul 18 
   [17] => 2013 Jul 19 
   [18] => 2013 Aug 19 
   [19] => 2013 Aug 20 
   [20] => 2013 Jul 22 
   [21] => 2013 Aug 22 
   [22] => 2013 Jul 23
   [23] => 2013 Aug 23
   [24] => 2013 Jul 24 
   [25] => 2013 Jul 25
   [26] => 2013 Jul 26 
   [27] => 2013 Jul 29 
   [28] => 2013 Jul 30 
   [29] => 2013 Aug 30 
)
我尝试了很多方法,但它似乎只按天值排序,而忽略了月份

使用
strotime()
将值从2013年8月1日转换为2013年8月1日。 我甚至尝试删除所有字符串,只得到一个像01082013这样的整数,但它仍然只查看要排序的日期值

提前谢谢

我尝试了这些方法,但只按天值排序

链接到我用来实现此功能的代码

$new_arr = array_map('strtotime',$my_arr);
asort($new_arr);         // For ascending order
foreach($new_arr as $dates) {
     $result_arr[] = date('Y m d' , $dates);
}
print_r($result_arr);
试着

$new_arr = array_map('strtotime',$my_arr);
asort($new_arr);         // For ascending order
foreach($new_arr as $dates) {
     $result_arr[] = date('Y m d' , $dates);
}
print_r($result_arr);

如果以“2013年8月29日”格式输入日期,则strotime不会返回时间戳,因为它不是strotime的有效输入格式。我们需要用破折号代替空格。 这是我的解决办法

usort($myDateArray, "dateCompare");
function dateCompare($date1, $date2){
    if($date1 == $date2){
        return 0;
    }
    return (strtotime(str_replace(" ","-",$date1)) < strtotime(str_replace(" ","-",$date2))) ? -1 : 1;
}
usort($myDateArray,“dateCompare”);
函数dateCompare($date1,$date2){
如果($date1==$date2){
返回0;
}
返回(strotime(str_replace(“,”-“,$date1))
如果以“2013年8月29日”格式输入日期,则strotime不会返回时间戳,因为它不是strotime的有效输入格式。我们需要用破折号代替空格。 这是我的解决办法

usort($myDateArray, "dateCompare");
function dateCompare($date1, $date2){
    if($date1 == $date2){
        return 0;
    }
    return (strtotime(str_replace(" ","-",$date1)) < strtotime(str_replace(" ","-",$date2))) ? -1 : 1;
}
usort($myDateArray,“dateCompare”);
函数dateCompare($date1,$date2){
如果($date1==$date2){
返回0;
}
返回(strotime(str_replace(“,”-“,$date1))
我在考虑自定义排序,并将字符串转换为时间戳。但您的方法似乎是sorter。这是不完整的:
date('ymd')将始终添加相同的日期,将时间戳传递给它,如果你想要时间戳,那么你可以直接使用它,而无需foreach循环@ØHankyPankyØoh thnku作为建议…我在flow中没有注意到。谢谢,我认为最好以
$my_arr
的格式发送日期,格式为
01-08-2013
我正在考虑自定义排序并将字符串转换为时间戳。但您的方法似乎是sorter。这是不完整的:
date('ymd')
将始终添加相同的日期,将时间戳传递给它,如果您想要时间戳,那么您可以直接使用它,而无需foreach循环@ØHankyPankyØoh thnku作为建议…我在flow中没有注意到。谢谢,我认为最好以
01-08-2013
的格式将日期发送到
$my_arr