3v4l.org

run code in 300+ PHP versions simultaneously
<?php $start = new DateTime('2012-07-01'); $interval = new DateInterval('P7D'); $end = new DateTime('2012-07-31'); $recurrences = 4; $iso = 'R4/2012-07-01T00:00:00Z/P7D'; // All of these periods are equivalent. $p = new DatePeriod($start, $interval, $recurrences); //$p = new DatePeriod($start, $interval, $end); //$p = new DatePeriod($iso); foreach ($p as $d) { echo $d->format('d '); } echo "\n"; $p = \PHP_VERSION_ID >= 70107 ? clone $p : new \DatePeriod( $p->getStartDate(), new \DateInterval($p->getDateInterval()->format('P%yY%mM%dDT%hH%iM%sS')), $p->getEndDate() ?: $p->recurrences, (int) $p->include_start_date ) ; foreach ($p as $d) { echo $d->format('d '); }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 21, Position 2 = 27
Branch analysis from position: 21
2 jumps found. (Code = 78) Position 1 = 22, Position 2 = 27
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 33
Branch analysis from position: 30
1 jumps found. (Code = 42) Position 1 = 57
Branch analysis from position: 57
2 jumps found. (Code = 77) Position 1 = 59, Position 2 = 65
Branch analysis from position: 59
2 jumps found. (Code = 78) Position 1 = 60, Position 2 = 65
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 59
Branch analysis from position: 59
Branch analysis from position: 65
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 65
Branch analysis from position: 33
2 jumps found. (Code = 77) Position 1 = 59, Position 2 = 65
Branch analysis from position: 59
Branch analysis from position: 65
Branch analysis from position: 27
filename:       /in/hX9KD
function name:  (null)
number of ops:  67
compiled vars:  !0 = $start, !1 = $interval, !2 = $end, !3 = $recurrences, !4 = $iso, !5 = $p, !6 = $d
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   NEW                                              $7      'DateTime'
          1        SEND_VAL_EX                                              '2012-07-01'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !0, $7
    4     4        NEW                                              $10     'DateInterval'
          5        SEND_VAL_EX                                              'P7D'
          6        DO_FCALL                                      0          
          7        ASSIGN                                                   !1, $10
    5     8        NEW                                              $13     'DateTime'
          9        SEND_VAL_EX                                              '2012-07-31'
         10        DO_FCALL                                      0          
         11        ASSIGN                                                   !2, $13
    6    12        ASSIGN                                                   !3, 4
    7    13        ASSIGN                                                   !4, 'R4%2F2012-07-01T00%3A00%3A00Z%2FP7D'
   10    14        NEW                                              $18     'DatePeriod'
         15        SEND_VAR_EX                                              !0
         16        SEND_VAR_EX                                              !1
         17        SEND_VAR_EX                                              !3
         18        DO_FCALL                                      0          
         19        ASSIGN                                                   !5, $18
   14    20      > FE_RESET_R                                       $21     !5, ->27
         21    > > FE_FETCH_R                                               $21, !6, ->27
   15    22    >   INIT_METHOD_CALL                                         !6, 'format'
         23        SEND_VAL_EX                                              'd+'
         24        DO_FCALL                                      0  $22     
         25        ECHO                                                     $22
   14    26      > JMP                                                      ->21
         27    >   FE_FREE                                                  $21
   18    28        ECHO                                                     '%0A'
   20    29      > JMPZ                                                     <true>, ->33
   21    30    >   CLONE                                            ~23     !5
         31        QM_ASSIGN                                        ~24     ~23
         32      > JMP                                                      ->57
   22    33    >   NEW                                              $25     'DatePeriod'
   23    34        INIT_METHOD_CALL                                         !5, 'getStartDate'
         35        DO_FCALL                                      0  $26     
         36        SEND_VAR_NO_REF_EX                                       $26
   24    37        NEW                                              $27     'DateInterval'
         38        INIT_METHOD_CALL                                         !5, 'getDateInterval'
         39        DO_FCALL                                      0  $28     
         40        INIT_METHOD_CALL                                         $28, 'format'
         41        SEND_VAL_EX                                              'P%25yY%25mM%25dDT%25hH%25iM%25sS'
         42        DO_FCALL                                      0  $29     
         43        SEND_VAR_NO_REF_EX                                       $29
         44        DO_FCALL                                      0          
         45        SEND_VAR_NO_REF_EX                                       $27
   25    46        INIT_METHOD_CALL                                         !5, 'getEndDate'
         47        DO_FCALL                                      0  $31     
         48        JMP_SET                                          ~32     $31, ->51
         49        FETCH_OBJ_R                                      ~33     !5, 'recurrences'
         50        QM_ASSIGN                                        ~32     ~33
         51        SEND_VAL_EX                                              ~32
   26    52        FETCH_OBJ_R                                      ~34     !5, 'include_start_date'
         53        CAST                                          4  ~35     ~34
         54        SEND_VAL_EX                                              ~35
         55        DO_FCALL                                      0          
         56        QM_ASSIGN                                        ~24     $25
   20    57    >   ASSIGN                                                   !5, ~24
   30    58      > FE_RESET_R                                       $38     !5, ->65
         59    > > FE_FETCH_R                                               $38, !6, ->65
   31    60    >   INIT_METHOD_CALL                                         !6, 'format'
         61        SEND_VAL_EX                                              'd+'
         62        DO_FCALL                                      0  $39     
         63        ECHO                                                     $39
   30    64      > JMP                                                      ->59
         65    >   FE_FREE                                                  $38
   32    66      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.76 ms | 1399 KiB | 13 Q