3v4l.org

run code in 300+ PHP versions simultaneously
<?php $base = new DateTime("1206-03-04 00:00:00 Europe/Berlin"); $date = new DateTime("2016-06-03 22:00:00 UTC"); $interval = new DateInterval('P10D'); echo ceilDateTimeByInterval($date, $interval, $base)->format('Y-m-d H:i:s e'); function ceilDateTimeByInterval(DateTime $date, DateInterval $interval, DateTime $base) { if ($date < $base) { return null; } $result = clone $base; while ($date > $result) { $result = $result->add($interval); } $result = $result->setTimezone($date->getTimezone()); return $result; }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5eonl
function name:  (null)
number of ops:  22
compiled vars:  !0 = $base, !1 = $date, !2 = $interval
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   NEW                                              $3      'DateTime'
          1        SEND_VAL_EX                                              '1206-03-04+00%3A00%3A00+Europe%2FBerlin'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !0, $3
    4     4        NEW                                              $6      'DateTime'
          5        SEND_VAL_EX                                              '2016-06-03+22%3A00%3A00+UTC'
          6        DO_FCALL                                      0          
          7        ASSIGN                                                   !1, $6
    5     8        NEW                                              $9      'DateInterval'
          9        SEND_VAL_EX                                              'P10D'
         10        DO_FCALL                                      0          
         11        ASSIGN                                                   !2, $9
    7    12        INIT_FCALL_BY_NAME                                       'ceilDateTimeByInterval'
         13        SEND_VAR_EX                                              !1
         14        SEND_VAR_EX                                              !2
         15        SEND_VAR_EX                                              !0
         16        DO_FCALL                                      0  $12     
         17        INIT_METHOD_CALL                                         $12, 'format'
         18        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As+e'
         19        DO_FCALL                                      0  $13     
         20        ECHO                                                     $13
   21    21      > RETURN                                                   1

Function ceildatetimebyinterval:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 6
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
2 jumps found. (Code = 44) Position 1 = 15, Position 2 = 9
Branch analysis from position: 15
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
2 jumps found. (Code = 44) Position 1 = 15, Position 2 = 9
Branch analysis from position: 15
Branch analysis from position: 9
filename:       /in/5eonl
function name:  ceilDateTimeByInterval
number of ops:  23
compiled vars:  !0 = $date, !1 = $interval, !2 = $base, !3 = $result
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
   10     3        IS_SMALLER                                               !0, !2
          4      > JMPZ                                                     ~4, ->6
   11     5    > > RETURN                                                   null
   14     6    >   CLONE                                            ~5      !2
          7        ASSIGN                                                   !3, ~5
   15     8      > JMP                                                      ->13
   16     9    >   INIT_METHOD_CALL                                         !3, 'add'
         10        SEND_VAR_EX                                              !1
         11        DO_FCALL                                      0  $7      
         12        ASSIGN                                                   !3, $7
   15    13    >   IS_SMALLER                                               !3, !0
         14      > JMPNZ                                                    ~9, ->9
   19    15    >   INIT_METHOD_CALL                                         !3, 'setTimezone'
         16        INIT_METHOD_CALL                                         !0, 'getTimezone'
         17        DO_FCALL                                      0  $10     
         18        SEND_VAR_NO_REF_EX                                       $10
         19        DO_FCALL                                      0  $11     
         20        ASSIGN                                                   !3, $11
   20    21      > RETURN                                                   !3
   21    22*     > RETURN                                                   null

End of function ceildatetimebyinterval

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
160.39 ms | 944 KiB | 14 Q