我是php新手,我有php日期数组
[0] => 11-01-2012
[1] => 01-01-2014
[2] => 01-01-2015
[3] => 09-02-2013
[4] => 01-01-2013
我想把它整理成:
[0] => 11-01-2012
[1] => 01-01-2013
[2] => 09-02-2013
[3] => 01-01-2014
[4] => 01-01-2015
我使用asort
但不能正常工作。
答案 0 :(得分:22)
因为数组项是字符串,所以需要将它们转换为日期,然后比较排序。使用自定义函数的usort()
排序数组,对于这种情况是一个很好的排序函数。
$arr = array('11-01-2012', '01-01-2014', '01-01-2015', '09-02-2013', '01-01-2013');
function date_sort($a, $b) {
return strtotime($a) - strtotime($b);
}
usort($arr, "date_sort");
print_r($arr);
检查demo
中的结果答案 1 :(得分:2)
尝试以下代码:
<?php
$array[0] = '11-01-2012';
$array[1] = '01-01-2011';
$array[2] = '09-02-2013';
$array[3] = '01-01-2014';
$array[4] = '01-01-2015';
function cmp($a, $b)
{
$a = date('Y-m-d', strtotime($a));
$b = date('Y-m-d', strtotime($b));
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
usort($array, "cmp");
foreach ($array as $key => $value) {
echo "[$key]=> $value <br>";
}
?>
答案 2 :(得分:1)
开箱即用使用时间函数生成ts并排序
<?php
$out = array();
// $your_array is the example obove
foreach($your_array as $time) {
$out[strtotime($time)] = $time;
}
// now $out has ts-keys and you can handle it
...
?>
答案 3 :(得分:0)
试试这个,
<?php
$array = [ '11-01-2012', '01-01-2014', '01-01-2015', '09-02-2013', '01-01-2013' ];
function sortFunction( $a, $b ) {
return strtotime($a) - strtotime($b);
}
usort($array, "sortFunction");
var_dump( $array );
?>
将日期排序为您想要的顺序。
答案 4 :(得分:0)
您绝对可以使用下面的给定代码对数组进行时间戳排序,但是我想将您的注意力转移到我以前存储的时间格式上。以这种格式存储时间有很多好处。在https://stackoverflow.com/a/59912185/7997043
上了解有关此内容的更多信息function compareByTimeStamp($a, $b ) {
return strtotime($b) - strtotime($a);
}
$arr = array("2020-02-11 00:00:00", "2020-02-13 00:00:00", "2020-02-08 00:00:00");
usort($arr, "compareByTimeStamp");
echo json_encode($arr);
答案 5 :(得分:0)
我通过应用此行解决了这个问题。
sort($imdarrayGG['newDate']);
在添加值之前输出
[Mon Jul 6 10:33:23 2020] Array
(
[coursedate] => 2020-07-17
[newDate] => Array
(
[0] => 2020-07-30
[1] => 2020-07-07
[2] => 2020-07-08
[3] => 2020-07-17
)
)
我把线放好之后,输出将变成这样。
[Mon Jul 6 10:35:42 2020] Array
(
[coursedate] => 2020-07-17
[newDate] => Array
(
[0] => 2020-07-07
[1] => 2020-07-08
[2] => 2020-07-17
[3] => 2020-07-30
)
)
已经排序的日期是最新日期。
答案 6 :(得分:-1)
使用DateTime排序日期:
$a = array(
new DateTime('2016-01-02'),
new DateTime('2016-05-01'),
new DateTime('2015-01-01'),
new DateTime('2016-01-01')
);
asort($a);
var_dump($a);
输出结果为:
array(4) {
[2]=>
object(DateTime)#3 (3) {
["date"]=>
string(26) "2015-01-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
[3]=>
object(DateTime)#4 (3) {
["date"]=>
string(26) "2016-01-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
[0]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-01-02 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
[1]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2016-05-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
}