如何在阵列中找到最大和最小日期?

son*_*iya 6 php arrays algorithm

我需要使用PHP从给定数组中找到最大和最小日期.

我有$ date_arr,其中包含以下值,

  $date_arr = array('0'=>'20-05-2015','1'=>'02-01-2015','2'=>'30-03-2015');
Run Code Online (Sandbox Code Playgroud)

在这里,我需要将更大的日期设置为'20 -05-2015',将最小日期设置为'02 -01-2015'.

我怎样才能做到这一点?

Adr*_*uer 9

<?php

$date_arr=array(0=>'20-05-2015',1=>'02-01-2015',2=>'30-03-2015');

usort($date_arr, function($a, $b) {
    $dateTimestamp1 = strtotime($a);
    $dateTimestamp2 = strtotime($b);

    return $dateTimestamp1 < $dateTimestamp2 ? -1: 1;
});

echo 'Min: ' . $date_arr[0];
echo '<br/>';
echo 'Max: ' . $date_arr[count($date_arr) - 1];


?>
Run Code Online (Sandbox Code Playgroud)

  • 为什么要对日期进行排序,使复杂性至少增加到 nlog(n)?您可以遍历所有日期 (2认同)

Azi*_*ima 6

max()min()与您的数组一起正常工作

echo "Latest Date: ". max($dates)."\n";
echo "Earliest Date: ". min($dates)."\n";
Run Code Online (Sandbox Code Playgroud)

  • 这个答案误导了研究人员,并且不适用于OP的“dd-mm-yyyy”格式字符串。这个答案是不正确的。在其他情况下,日期格式从年份开始并逐渐过渡到更小的单位,这可以很好地工作。 (2认同)