3v4l.org

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

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
173.92 ms | 1404 KiB | 17 Q