我有一种情况,一系列的15个日期已经创建,目前在UNIX时间戳中。找到最小数字/日期的PHP快捷方式
另一个变量<?php $dateidate = date(strtotime('+20 days')); ?>
的目标是找到最小的其他15个日期比在'd-m-Y'
格式为$ dateidate和显示更大>
的。一旦我们做到了这一点是有一个获得其他15个日期中排在第二小于>
的第二小于$dateidate
,并以'd-m-Y'
的格式显示。
我有一种情况,一系列的15个日期已经创建,目前在UNIX时间戳中。找到最小数字/日期的PHP快捷方式
另一个变量<?php $dateidate = date(strtotime('+20 days')); ?>
的目标是找到最小的其他15个日期比在'd-m-Y'
格式为$ dateidate和显示更大>
的。一旦我们做到了这一点是有一个获得其他15个日期中排在第二小于>
的第二小于$dateidate
,并以'd-m-Y'
的格式显示。
所以,你有15个日期是UNIX时间戳。有用。
好吧,这里是你可以做很容易做到这一点的:
$datearray = array(timestamp1,timestamp2,etc.) // an array of timestamps
$dateidate = time() + 1728000; //current time + 20 days worth of seconds (20 * 24 * 60 * 60)
foreach($datearray as $key => $date)
{
if($date < $dateidate)
{
unset $datearray[$key]; //Remove timestamp from original array if less than $dateidate
}
}
$earliestdate = min($datearray);
//min returns the least of the values in the array, opposite of max, which you could use to find the latest date in the array
$date = date('d-m-Y',$earliestdate);
strtotime生成一个时间戳。 而不是这样的:
<?php $dateidate = date(strtotime('+20 days')); ?>
做到这一点:
<?php $dateidate = strtotime('+20 days'); ?>
把所有的时间标记与特殊功能键的排列,所以你可以区分哪一个是你的支点。 对该数组进行排序,并执行您需要对排序数组执行的操作。
问题是我不确定如何去做我想要做的事情。我从时间上得到了他们的时间戳。它的排序和计算我不确定 – 2011-03-30 15:43:50
时间戳是整数,秒更精确。所以更大的日期是一个更大的时间戳。例如1.1.2011的结果是比1.2.2011更小的时间戳。 – ITroubs 2011-03-30 15:45:33
仍然不知道如何从数组中找到高于$ dateidate的值。我想我想把它们放在一个数组中查找大于$ dateidate的值,然后找到min()。但我不知道如何做第一位,也不知道如何找到第二个最小的 – 2011-03-30 15:53:05
该解决方案过滤$dates
阵列使用anonymous function,所以$shorterOnes
数组中,你将有所有比$dateidate
更大的时间戳存储时间戳。
然后数组是sorted,第一个将是最小的,依此类推。
$dateidate=strtotime('+20 days');
$dates=array(/*timestamps*/);
$shorterOnes=array_filter($dates, function ($v) use ($dateidate) {
return $v>$dateidate;
});
sort($shorterOnes);
echo date('d-m-Y', $shorterOnes[0]);
echo date('d-m-Y', $shorterOnes[1]);
匿名函数只适用于PHP 5.3。低于此值,您需要使用create_function()。
时间戳很容易被分类为以整数数组,然后比较新的日期。 – AJJ 2011-03-30 15:45:44