如何在PHP中对日期数组中的日期从最近日期到最远日期进行排序
回答了这个问题,但我不太明白答案 我有一个包含日期的数组 我想对列如何在PHP中对日期数组中的日期从最近日期到最远日期进行排序,php,arrays,sorting,Php,Arrays,Sorting,回答了这个问题,但我不太明白答案 我有一个包含日期的数组 我想对列date\u res(results date)按最近的日期排序,而不是按最大值或最小值排序 我的阵列可能会帮助你 <?php $today = date('Y-m-d'); $arr = array( [ 'id' => '1', 'date' => '2020-03-27', 'date_end' => '2020-05-02 17:00',
date\u res
(results date)按最近的日期排序,而不是按最大值或最小值排序
我的阵列可能会帮助你
<?php
$today = date('Y-m-d');
$arr = array(
[
'id' => '1',
'date' => '2020-03-27',
'date_end' => '2020-05-02 17:00',
'date_res' => '2020-06-02'
],
[
'id' => '2',
'date' => '2020-04-27',
'date_end' => '2020-06-02 17:00',
'date_res' => '2020-08-02'
],
[
'id' => '3',
'date' => '2020-06-27',
'date_end' => '2020-07-02 17:00',
'date_res' => '2020-08-02'
],
[
'id' => '4',
'date' => '2021-01-01',
'date_end' => '2021-02-01 17:00',
'date_res' => '2021-03-01'
],
[
'id' => '5',
'date' => '2021-02-01',
'date_end' => '2021-03-01 17:00',
'date_res' => '2021-04-01'
],
[
'id' => '6',
'date' => '2021-05-01',
'date_end' => '2021-06-01 17:00',
'date_res' => '2021-08-01'
],
[
'id' => '7',
'date' => '2021-02-06',
'date_end' => '2021-01-29 17:00',
'date_res' => '2021-01-29'
],
[
'id' => '9',
'date' => '2021-04-27',
'date_end' => '2021-05-03 17:00',
'date_res' => '2021-05-03'
],
[
'id' => '10',
'date' => '2021-02-01',
'date_end' => '2021-02-06 17:00',
'date_res' => '2021-05-03'
],
[
'id' => '11',
'date' => '2021-02-02',
'date_end' => '2021-02-07 17:00',
'date_res' => '2021-05-05'
],
[
'id' => '12',
'date' => '2021-03-27',
'date_end' => '2021-02-07 17:00',
'date_res' => '2021-06-02'
]);
?>
试试(注意,我在排序日期
函数中将日期列转换为日期,因为它是字符串):
我使用您提供的数组获得所需的输出。尝试(注意,我在sort\u dates
函数中将date\u res列转换为date,因为它是字符串):
我使用您提供的数组获得所需的输出。您需要将
日期
项的差异与今天的进行比较:
usort($arr, function($dateA, $dateB) use ($today) {
return
abs(strtotime($dateA['date_res']) - strtotime($today)) -
abs(strtotime($dateB['date_res']) - strtotime($today));
});
abs
用于获取date\u res
和today
之间的“距离”,无论是在日期之前还是之后。然后比较“距离”
工作
工具书类
您需要将日期
条目的差异与今天的进行比较:
usort($arr, function($dateA, $dateB) use ($today) {
return
abs(strtotime($dateA['date_res']) - strtotime($today)) -
abs(strtotime($dateB['date_res']) - strtotime($today));
});
abs
用于获取date\u res
和today
之间的“距离”,无论是在日期之前还是之后。然后比较“距离”
工作
工具书类
今天之前的日期应该如何处理?@John Hanley,它将从日期更改为链接,因为在结果日期结束后,结果将出现,并且有一个链接,这不是我的问题。您的问题按最接近今天的日期进行排序。在你的排序程序中,昨天和明天是一样的吗?OP似乎想要今天和日期之间的绝对差/距离从最小到最大排序。昨天和明天的距离是相等的。我不知道,但我认为如果你把yasterday放在同一个套路中没有问题,因为yasterday会被隐藏,@John Hanley今天之前的日期应该如何处理?@John Hanley,它会从日期改为链接,因为结果日期结束后,结果将出现,并有一个链接,这不是我的问题。您的问题按最接近今天的日期进行排序。在你的排序程序中,昨天和明天是一样的吗?OP似乎想要今天和日期之间的绝对差/距离从最小到最大排序。昨天和明天的距离是相等的。我不知道,但我认为如果你在同一个例程中,但yasterday没有问题,因为yasterday将被隐藏,@John Hanleyno它不工作。我测试了它,它使用你提供的相同数组对我有效。你确定从这段代码中,因为我认为我的代码中的问题是我在itI中添加了你的代码。我将以另一种方式尝试这个答案。这个答案不符合标准:最接近今天,不是最大的或最小的你只是在日期上排序。不,它不工作。我测试了它,它使用你提供的相同数组对我有效。你确定从这段代码中,因为我认为我的代码中的问题是我在其中添加了你的代码。我会用另一种方式尝试这个答案。这个答案不符合标准:最接近今天,不是最大或最小的你只是在日期上排序。\u res
。谢谢你,兄弟,成功了谢谢你,兄弟,成功了