0

我在 PHP 数组列表中有一个日期列表。所有日期都在星期二或星期四登陆,格式如下:2012 年 3 月 8 日。我正在尝试列出日期并检查最多接下来的 8 个(所有这些都必须在未来,没有通过)并验证每个日期在一周中的哪一天。一旦发现,我想将它们放入 2 个单独的列表中,一个用于周二登陆的 4 个,另一个用于周四登陆的 4 个(稍后将放入单独的 DIV 中)。有人知道如何完成这项工作吗?

为了分离 200 多行代码,这是我的示例:

今天是 2012 年 11 月 26 日,星期一。

这是我的日期数组:

2012年11月27日 2012年
11月29日 2012年
12月4日 2012年
12月6日 2012年
12月11日 2012年
12月13日 2012年
12月18日 2012年
12月20日 2012年
12月25日 2012年
12月27日2013年1
月1日 2013年
1月3日
1月8日, 2013 年
1 月 10 日 2013

我想把它变成2个列表:

星期二列表 2012 年 11 月 27 日 2012 年
12 月 4 日 2012 年
12 月 11 日 2012 年
12 月 18 日

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

提前致谢!

4

2 回答 2

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数组来保存数据-

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

循环遍历每个date,从当前(或最接近的)日期开始 8 次$key+8,并将它们添加到Tuesday(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];}
}
于 2012-11-27T07:06:13.330 回答
0

怎么样:

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

这应该为您提供所需的所有信息。

于 2012-11-26T18:50:01.487 回答