2012-11-26 76 views
0

我有一个PHP数组列表中的日期列表。所有日期都在星期二或星期四登陆,并采用以下格式:2012年3月8日。我试图列出日期列表,并检查最近的8个日期(所有这些日期都必须在未来,没有通过),并验证每个日期所在的星期几。一旦发现,我想把它们放在两个单独的列表中,一个用于星期二登陆的4个,另一个用于星期四的4个(稍后将放入单独的DIV中)。任何人有关于如何完成这个任务的想法?检查日期是否在特定日期和排序

为了分离200个多行代码的缘故,这里是我的例子:

今天是周一,11月26日,2012年

这里是我的日期的数组:

2012年11月27日
2012年11月29日
2012年12月4日
2012年12月6日
月11日,二○一二年十二月一十三日
二○一二年十二月一十八日
2012年12月20日
2012年12月25日
2012年12月27日
2013年1月1日
2013年1月3日
2013年1月8日
一月10,2013

我希望把它变成2所列出:

周二名单 2012年11月27日
2012年12月4
二零一二年十二月十一日
2012年12月18日

星期四列表 2012年11月29日
2012年12月6日
2012年12月13日
2012年12月20日

在此先感谢!

+1

你尝试过什么吗? – GarethL

+0

是的,我已经尝试了几个小时的研究,并且已经完成了刚刚完成的结构。 – Mikel

+0

通过“看看他们登陆哪个日期”,你的意思是“确认一周中的哪一天是日期?”同时解释你的标准在多个地方。例如,你有什么标准来检查未来日期?你提到它是最多8个,但可能更少。 “发现”是什么意思?将日期列入两个列表的标准是什么?星期二在一个,星期四在另一个?另外,请张贴一些代码。 – JYelton

回答

0

如何:

date('w', strtotime($my_date)); 

这应该给你你需要的所有信息。

0

下面是几个步骤的过程(创建功能,通过数据整理利用关键位置的日期环拿到钥匙)

数组(使用贴样品阵列) -

$date_array = array('November 27, 2012','November 29, 2012','December 4, 2012','December 6, 2012','December 11, 2012','December 13, 2012','December 18, 2012','December 20, 2012','December 25, 2012','December 27, 2012','January 1, 2013','January 3, 2013','January 8, 2013','January 10, 2013'); 

开始通过创建一个函数,找到最接近$array

function closest($array, $number) { 

    ksort($array); 
    foreach ($array as $a) { 
    if (strtotime($a) >= strtotime($number)) return $a; 
    } 
    return end($array); 
    }; 

查找今天的日期,或再下一个最接近的日期,使用我们的新功能,然后拿到value的键 -

$today = date("F j, Y"); 
$value = closest($date_array, $today); 
$key = array_search($value, $date_array); 

创建Tuesday & Thursday阵列穿过每个date保持DATA-

$tues_array = array(); 
$thurs_array = array(); 

环路,当前(或最近的)日起的8倍$key+8并将它们添加(2)(2)& Thursday(4)

for($i=$key;$i<($key+8);$i++){ 
    $dayofweek = date('w', strtotime($date_array[$i])); 
    if ($dayofweek == 2){ 
     $tues_array[] = $date_array[$i];} 
    if ($dayofweek == 4){ 
     $thurs_array[] = $date_array[$i];} 
} 
相关问题