3v4l.org

run code in 300+ PHP versions simultaneously
<?php $sample1 = "2010-01-31"; $dnow = date("t",strtotime($sample1)); $dnext = date("t",strtotime($sample1 . " +1 month")); $dday = date("d",strtotime($sample1)); $output = strtotime("+1 month"); if ($dnext < $dnow && $dnext < $dday) { $nextMonth = date("Y-m", strtotime($sample)); $nextMonth = date("Y-m", strtotime($nextMonth . " +1 month")); $output = date("Y-m-d", strtotime($nextMonth . '-' . $dnext)); } echo $output; $ts = strtotime('2010-01-31 +1 month'); echo date('Y-m-d', $ts); echo "\n"; $dt = new \DateTime('2010-01-31'); $dt->add(new \DateInterval('P1M')); echo $dt->format('Y-m-d'); echo "\n"; $ts = strtotime('2010-01-05 +1 month'); echo date('Y-m-d', $ts); echo "\n"; $dt = new \DateTime('2010-01-05'); $dt->add(new \DateInterval('P1M')); echo $dt->format('Y-m-d');
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 32, Position 2 = 34
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 62
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 62
Branch analysis from position: 34
filename:       /in/H90W6
function name:  (null)
number of ops:  113
compiled vars:  !0 = $sample1, !1 = $dnow, !2 = $dnext, !3 = $dday, !4 = $output, !5 = $nextMonth, !6 = $sample, !7 = $ts, !8 = $dt
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, '2010-01-31'
    3     1        INIT_FCALL                                               'date'
          2        SEND_VAL                                                 't'
          3        INIT_FCALL                                               'strtotime'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $10     
          6        SEND_VAR                                                 $10
          7        DO_ICALL                                         $11     
          8        ASSIGN                                                   !1, $11
    4     9        INIT_FCALL                                               'date'
         10        SEND_VAL                                                 't'
         11        INIT_FCALL                                               'strtotime'
         12        CONCAT                                           ~13     !0, '+%2B1+month'
         13        SEND_VAL                                                 ~13
         14        DO_ICALL                                         $14     
         15        SEND_VAR                                                 $14
         16        DO_ICALL                                         $15     
         17        ASSIGN                                                   !2, $15
    5    18        INIT_FCALL                                               'date'
         19        SEND_VAL                                                 'd'
         20        INIT_FCALL                                               'strtotime'
         21        SEND_VAR                                                 !0
         22        DO_ICALL                                         $17     
         23        SEND_VAR                                                 $17
         24        DO_ICALL                                         $18     
         25        ASSIGN                                                   !3, $18
    6    26        INIT_FCALL                                               'strtotime'
         27        SEND_VAL                                                 '%2B1+month'
         28        DO_ICALL                                         $20     
         29        ASSIGN                                                   !4, $20
    7    30        IS_SMALLER                                       ~22     !2, !1
         31      > JMPZ_EX                                          ~22     ~22, ->34
         32    >   IS_SMALLER                                       ~23     !2, !3
         33        BOOL                                             ~22     ~23
         34    > > JMPZ                                                     ~22, ->62
    9    35    >   INIT_FCALL                                               'date'
         36        SEND_VAL                                                 'Y-m'
         37        INIT_FCALL                                               'strtotime'
         38        SEND_VAR                                                 !6
         39        DO_ICALL                                         $24     
         40        SEND_VAR                                                 $24
         41        DO_ICALL                                         $25     
         42        ASSIGN                                                   !5, $25
   10    43        INIT_FCALL                                               'date'
         44        SEND_VAL                                                 'Y-m'
         45        INIT_FCALL                                               'strtotime'
         46        CONCAT                                           ~27     !5, '+%2B1+month'
         47        SEND_VAL                                                 ~27
         48        DO_ICALL                                         $28     
         49        SEND_VAR                                                 $28
         50        DO_ICALL                                         $29     
         51        ASSIGN                                                   !5, $29
   11    52        INIT_FCALL                                               'date'
         53        SEND_VAL                                                 'Y-m-d'
         54        INIT_FCALL                                               'strtotime'
         55        CONCAT                                           ~31     !5, '-'
         56        CONCAT                                           ~32     ~31, !2
         57        SEND_VAL                                                 ~32
         58        DO_ICALL                                         $33     
         59        SEND_VAR                                                 $33
         60        DO_ICALL                                         $34     
         61        ASSIGN                                                   !4, $34
   13    62    >   ECHO                                                     !4
   16    63        INIT_FCALL                                               'strtotime'
         64        SEND_VAL                                                 '2010-01-31+%2B1+month'
         65        DO_ICALL                                         $36     
         66        ASSIGN                                                   !7, $36
   17    67        INIT_FCALL                                               'date'
         68        SEND_VAL                                                 'Y-m-d'
         69        SEND_VAR                                                 !7
         70        DO_ICALL                                         $38     
         71        ECHO                                                     $38
   18    72        ECHO                                                     '%0A'
   19    73        NEW                                              $39     'DateTime'
         74        SEND_VAL_EX                                              '2010-01-31'
         75        DO_FCALL                                      0          
         76        ASSIGN                                                   !8, $39
   20    77        INIT_METHOD_CALL                                         !8, 'add'
         78        NEW                                              $42     'DateInterval'
         79        SEND_VAL_EX                                              'P1M'
         80        DO_FCALL                                      0          
         81        SEND_VAR_NO_REF_EX                                       $42
         82        DO_FCALL                                      0          
   21    83        INIT_METHOD_CALL                                         !8, 'format'
         84        SEND_VAL_EX                                              'Y-m-d'
         85        DO_FCALL                                      0  $45     
         86        ECHO                                                     $45
   22    87        ECHO                                                     '%0A'
   23    88        INIT_FCALL                                               'strtotime'
         89        SEND_VAL                                                 '2010-01-05+%2B1+month'
         90        DO_ICALL                                         $46     
         91        ASSIGN                                                   !7, $46
   24    92        INIT_FCALL                                               'date'
         93        SEND_VAL                                                 'Y-m-d'
         94        SEND_VAR                                                 !7
         95        DO_ICALL                                         $48     
         96        ECHO                                                     $48
   25    97        ECHO                                                     '%0A'
   26    98        NEW                                              $49     'DateTime'
         99        SEND_VAL_EX                                              '2010-01-05'
        100        DO_FCALL                                      0          
        101        ASSIGN                                                   !8, $49
   27   102        INIT_METHOD_CALL                                         !8, 'add'
        103        NEW                                              $52     'DateInterval'
        104        SEND_VAL_EX                                              'P1M'
        105        DO_FCALL                                      0          
        106        SEND_VAR_NO_REF_EX                                       $52
        107        DO_FCALL                                      0          
   28   108        INIT_METHOD_CALL                                         !8, 'format'
        109        SEND_VAL_EX                                              'Y-m-d'
        110        DO_FCALL                                      0  $55     
        111        ECHO                                                     $55
        112      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
176.11 ms | 1404 KiB | 17 Q