Php 如何从仅包含月份和年份的日期数组中获取最小值和最大值?

Php 如何从仅包含月份和年份的日期数组中获取最小值和最大值?,php,date,Php,Date,我有一个只包含月份和年份的日期数组。我想从中获取最小和最大日期 $dates = array('1-2018','5-2019','10-2018','5-2020'); 您应该使用DateTime::createFromFormat 然后使用sort功能对它们进行排序 sort($dates); 您应该使用DateTime::createFromFormat 然后使用sort功能对它们进行排序 sort($dates); 使用usort。usort需要一个用于比较的函数。只有月份和年份的

我有一个只包含月份和年份的日期数组。我想从中获取最小和最大日期

$dates = array('1-2018','5-2019','10-2018','5-2020');

您应该使用
DateTime::createFromFormat

然后使用
sort
功能对它们进行排序

sort($dates);

您应该使用
DateTime::createFromFormat

然后使用
sort
功能对它们进行排序

sort($dates);

使用usort。usort需要一个用于比较的函数。只有月份和年份的字符串不能用strotime进行分析。一天(我使用简单的1-)返回strottime一个正确的时间戳。这个函数是为一个升序排序。对于下降排序,您只能切换$a和$b。 为了更好的测试,我已经在数组中添加了一些值

<?php
$dates = array('1-2018','5-2019','10-2018','5-2020','9-1978','6-2001');

usort($dates, function($a,$b){ return strtotime('1-'.$a) <=> strtotime('1-'.$b);});

echo "<pre>".var_export($dates, true)."\n";

echo "Min: ".reset($dates)."\n";
echo "Max: ".end($dates)."\n";

演示:

使用usort。usort需要一个用于比较的函数。只有月份和年份的字符串不能用strotime进行分析。一天(我使用简单的1-)返回strottime一个正确的时间戳。这个函数是为一个升序排序。对于下降排序,您只能切换$a和$b。 为了更好的测试,我已经在数组中添加了一些值

<?php
$dates = array('1-2018','5-2019','10-2018','5-2020','9-1978','6-2001');

usort($dates, function($a,$b){ return strtotime('1-'.$a) <=> strtotime('1-'.$b);});

echo "<pre>".var_export($dates, true)."\n";

echo "Min: ".reset($dates)."\n";
echo "Max: ".end($dates)."\n";

演示:

为什么我们需要用户函数对它们进行排序?我不知道排序如何处理日期。也许,
sort
工作得很好。您可以轻松地测试它,因为您已经编写了代码。只需执行并查看,例如,为什么我们需要用户函数对它们进行排序?我不知道排序如何处理日期。也许,
sort
工作得很好。您可以轻松地测试它,因为您已经编写了代码。只需执行并查看,例如。