3v4l.org

run code in 300+ PHP versions simultaneously
<?php function add_weeks($weeks = 1, $base = 'now') { // treat non-strings as a unix timestamp if (!is_string($base)) { $base = '@' . intval($base); } return strtotime(sprintf('%s +%d weeks', $base, $weeks)); } echo date('Y-m-d', add_weeks()) . "\n"; echo date('Y-m-d', add_weeks(2)) . "\n"; echo date('Y-m-d', add_weeks(1, time() + 86400)) . "\n"; echo date('Y-m-d', add_weeks(1, '2012-06-05')) . "\n"; $oneWeek = add_weeks(1, 'now'); if (date('j', $oneWeek) < date('j')) { $oneWeek = strtotime('last day of this month'); } echo date('Y-m-d', $oneWeek) . "\n";
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 54, Position 2 = 58
Branch analysis from position: 54
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 58
filename:       /in/bPsrG
function name:  (null)
number of ops:  65
compiled vars:  !0 = $oneWeek
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   13     0  E >   INIT_FCALL                                               'date'
          1        SEND_VAL                                                 'Y-m-d'
          2        INIT_FCALL                                               'add_weeks'
          3        DO_FCALL                                      0  $1      
          4        SEND_VAR                                                 $1
          5        DO_ICALL                                         $2      
          6        CONCAT                                           ~3      $2, '%0A'
          7        ECHO                                                     ~3
   14     8        INIT_FCALL                                               'date'
          9        SEND_VAL                                                 'Y-m-d'
         10        INIT_FCALL                                               'add_weeks'
         11        SEND_VAL                                                 2
         12        DO_FCALL                                      0  $4      
         13        SEND_VAR                                                 $4
         14        DO_ICALL                                         $5      
         15        CONCAT                                           ~6      $5, '%0A'
         16        ECHO                                                     ~6
   15    17        INIT_FCALL                                               'date'
         18        SEND_VAL                                                 'Y-m-d'
         19        INIT_FCALL                                               'add_weeks'
         20        SEND_VAL                                                 1
         21        INIT_FCALL                                               'time'
         22        DO_ICALL                                         $7      
         23        ADD                                              ~8      $7, 86400
         24        SEND_VAL                                                 ~8
         25        DO_FCALL                                      0  $9      
         26        SEND_VAR                                                 $9
         27        DO_ICALL                                         $10     
         28        CONCAT                                           ~11     $10, '%0A'
         29        ECHO                                                     ~11
   16    30        INIT_FCALL                                               'date'
         31        SEND_VAL                                                 'Y-m-d'
         32        INIT_FCALL                                               'add_weeks'
         33        SEND_VAL                                                 1
         34        SEND_VAL                                                 '2012-06-05'
         35        DO_FCALL                                      0  $12     
         36        SEND_VAR                                                 $12
         37        DO_ICALL                                         $13     
         38        CONCAT                                           ~14     $13, '%0A'
         39        ECHO                                                     ~14
   18    40        INIT_FCALL                                               'add_weeks'
         41        SEND_VAL                                                 1
         42        SEND_VAL                                                 'now'
         43        DO_FCALL                                      0  $15     
         44        ASSIGN                                                   !0, $15
   19    45        INIT_FCALL                                               'date'
         46        SEND_VAL                                                 'j'
         47        SEND_VAR                                                 !0
         48        DO_ICALL                                         $17     
         49        INIT_FCALL                                               'date'
         50        SEND_VAL                                                 'j'
         51        DO_ICALL                                         $18     
         52        IS_SMALLER                                               $17, $18
         53      > JMPZ                                                     ~19, ->58
   20    54    >   INIT_FCALL                                               'strtotime'
         55        SEND_VAL                                                 'last+day+of+this+month'
         56        DO_ICALL                                         $20     
         57        ASSIGN                                                   !0, $20
   22    58    >   INIT_FCALL                                               'date'
         59        SEND_VAL                                                 'Y-m-d'
         60        SEND_VAR                                                 !0
         61        DO_ICALL                                         $22     
         62        CONCAT                                           ~23     $22, '%0A'
         63        ECHO                                                     ~23
         64      > RETURN                                                   1

Function add_weeks:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 8
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
filename:       /in/bPsrG
function name:  add_weeks
number of ops:  18
compiled vars:  !0 = $weeks, !1 = $base
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV_INIT                                        !0      1
          1        RECV_INIT                                        !1      'now'
    6     2        TYPE_CHECK                                   64  ~2      !1
          3        BOOL_NOT                                         ~3      ~2
          4      > JMPZ                                                     ~3, ->8
    7     5    >   CAST                                          4  ~4      !1
          6        CONCAT                                           ~5      '%40', ~4
          7        ASSIGN                                                   !1, ~5
   10     8    >   INIT_FCALL                                               'strtotime'
          9        INIT_FCALL                                               'sprintf'
         10        SEND_VAL                                                 '%25s+%2B%25d+weeks'
         11        SEND_VAR                                                 !1
         12        SEND_VAR                                                 !0
         13        DO_ICALL                                         $7      
         14        SEND_VAR                                                 $7
         15        DO_ICALL                                         $8      
         16      > RETURN                                                   $8
   11    17*     > RETURN                                                   null

End of function add_weeks

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
156.26 ms | 1403 KiB | 26 Q