【问题标题】:PHP Loop date by MonthPHP循环日期按月
【发布时间】:2018-07-12 20:29:07
【问题描述】:

在这个日期数组上有一个 PEBKAC...我不明白为什么第二维的第一个位置会被日期的最后修改覆盖...非常感谢所有帮助!

$year=date('Y');
$count=date('m'); //loop from begining of current year to current month

$begin =new DateTime("$year-01-01");
$end = clone $begin;


for ($i=0; $i < $count; $i++){
    if ($i >0){ 
        $begin=$begin->add(new DateInterval('P1M'));
        $end = clone $begin;
    }
    $dateArray[$i][0]=$begin;
    $dateArray[$i][1]=$end->modify('last day of this month');
}

我正在寻找的输出是有一个多维数组,其中包含从当年到当月的每个月的第一个日期和最后一个日期。

【问题讨论】:

    标签: php arrays loops date


    【解决方案1】:

    您正在存储对$begin 的引用,然后在每个循环中更新$begin。将 $begin 分配给数组时克隆:

    $dateArray[$i][0] = clone $begin;
    

    【讨论】:

      【解决方案2】:
      $year  =date('Y');
      $count =date('m'); //loop from begining of current year to current month
      
      $begin = new DateTime("$year-01-01");
      $end   = clone $begin;
      
      for ($i=0; $i < $count; $i++){
          if ($i >0){ 
              $begin = $begin->add(new DateInterval('P1M'));
              $end   = clone $begin;
          }
          $dateArray[$i][0]=clone $begin;
          $dateArray[$i][1]=$end->modify('last day of this month');
      }
      

      将产生:

      Array
      (
      [0] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-01-01 00:00:00.000000
                      [timezone_type] => 3
                  )
      
              [1] => DateTime Object
                  (
                      [date] => 2018-01-31 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      [1] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-02-01 00:00:00.000000
                      [timezone_type] => 3
                  )
      
              [1] => DateTime Object
                  (
                      [date] => 2018-02-28 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      [2] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-03-01 00:00:00.000000
                      [timezone_type] => 3
                  )
              [1] => DateTime Object
                  (
                      [date] => 2018-03-31 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      [3] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-04-01 00:00:00.000000
                      [timezone_type] => 3
                  )
              [1] => DateTime Object
                  (
                      [date] => 2018-04-30 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      [4] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-05-01 00:00:00.000000
                      [timezone_type] => 3
                  )
              [1] => DateTime Object
                  (
                      [date] => 2018-05-31 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      [5] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-06-01 00:00:00.000000
                      [timezone_type] => 3
                  )
              [1] => DateTime Object
                  (
                      [date] => 2018-06-30 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      [6] => Array
          (
              [0] => DateTime Object
                  (
                      [date] => 2018-07-01 00:00:00.000000
                      [timezone_type] => 3
                  )
              [1] => DateTime Object
                  (
                      [date] => 2018-07-31 00:00:00.000000
                      [timezone_type] => 3
                  )
          )
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-02
        相关资源
        最近更新 更多